我正在尝试使用child_process从nodejs运行控制台应用程序的实例(在cpp上编写)。 这是代码:
function startSingleApp() {
console.log("startSingleApp entered");
var exec = childProcess.exec;
var appOut;
exec("./ConsoleApplication.exe" ,function callback(error, stdout, stderr){
appOut = stdOut;
console.log("started console app");
});
};
并且ConsoleApplication4只打印字符串(cout<<“某些字符串”) 预期行为:对于ConsoleApplication4的每个实例 - 打开控制台窗口并创建新进程 实际行为:没有控制台窗口,没有创建进程。但是“启动控制台应用程序”字符串打印在控制台上(从nodejs应用程序启动) ConsoleApplication.exe位于nodejs app所在的同一文件夹中 如果通过某个窗口应用程序(记事本或计算)替换ConsoleApplication.exe - 它可以工作。 问题 - 这段代码中缺少什么?我是否需要从控制台应用程序中手动捕获控制台? 你的帮助会有所帮助 提前做出来的
答案 0 :(得分:2)
如果从控制台运行控制台应用程序,它仍将在同一个控制台中运行。 Windows控制台只是在您通过资源管理器运行控制台应用程序时自动打开的便利。
您可以自己尝试:首先打开cmd.exe
,然后运行ConsoleApplication.exe
。它不会打开一个新窗口;输出将显示在提示下方。然后你会得到另一个。
如果您想要显示一个窗口,可以手动运行cmd
:
exec("cmd /c ConsoleApplication.exe", function callback(error, stdout, stderr) {
appOut = stdOut;
console.log("started console app");
});
答案 1 :(得分:0)
您可以使用start
创建一个新的控制台窗口,如下所示:
exec("start ConsoleApplication.exe", ....)
并在C ++中添加一行:
getch();