Node.js 使用子进程从nodejs应用程序运行控制台应用程序

Node.js 使用子进程从nodejs应用程序运行控制台应用程序,node.js,child-process,Node.js,Child Process,我试图通过使用child_进程从nodejs运行控制台应用程序(写在cpp上)的实例。 代码如下: function startSingleApp() { console.log("startSingleApp entered"); var exec = childProcess.exec; var appOut; exec("./ConsoleApplication.exe" ,function callback(error, stdout, stderr)

我试图通过使用child_进程从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如果您从控制台运行控制台应用程序,它仍将在同一控制台中运行。Windows控制台只是一种方便,当您通过资源管理器运行控制台应用程序时,它会自动打开

您可以自己尝试:先打开
cmd.exe
,然后运行
ConsoleApplication.exe
。它不会打开新窗口;输出将显示在您的提示符下。然后您将获得另一个窗口

如果要显示窗口,可以手动运行
cmd

exec("cmd /c ConsoleApplication.exe", function callback(error, stdout, stderr) {
    appOut = stdOut;
    console.log("started console app");
});

如果您从控制台运行控制台应用程序,它仍将在同一控制台中运行。Windows控制台只是一种方便,当您通过资源管理器运行控制台应用程序时,它会自动打开

您可以自己尝试:先打开
cmd.exe
,然后运行
ConsoleApplication.exe
。它不会打开新窗口;输出将显示在您的提示符下。然后您将获得另一个窗口

如果要显示窗口,可以手动运行
cmd

exec("cmd /c ConsoleApplication.exe", function callback(error, stdout, stderr) {
    appOut = stdOut;
    console.log("started console app");
});

如果您从控制台运行控制台应用程序,它仍将在同一控制台中运行。Windows控制台只是一种方便,当您通过资源管理器运行控制台应用程序时,它会自动打开

您可以自己尝试:先打开
cmd.exe
,然后运行
ConsoleApplication.exe
。它不会打开新窗口;输出将显示在您的提示符下。然后您将获得另一个窗口

如果要显示窗口,可以手动运行
cmd

exec("cmd /c ConsoleApplication.exe", function callback(error, stdout, stderr) {
    appOut = stdOut;
    console.log("started console app");
});

如果您从控制台运行控制台应用程序,它仍将在同一控制台中运行。Windows控制台只是一种方便,当您通过资源管理器运行控制台应用程序时,它会自动打开

您可以自己尝试:先打开
cmd.exe
,然后运行
ConsoleApplication.exe
。它不会打开新窗口;输出将显示在您的提示符下。然后您将获得另一个窗口

如果要显示窗口,可以手动运行
cmd

exec("cmd /c ConsoleApplication.exe", function callback(error, stdout, stderr) {
    appOut = stdOut;
    console.log("started console app");
});

您可以使用
start
创建如下新控制台窗口:

exec("start ConsoleApplication.exe", ....)
并在C++中添加一行:

getch();

您可以使用
start
创建如下新控制台窗口:

exec("start ConsoleApplication.exe", ....)
并在C++中添加一行:

getch();

您可以使用
start
创建如下新控制台窗口:

exec("start ConsoleApplication.exe", ....)
并在C++中添加一行:

getch();

您可以使用
start
创建如下新控制台窗口:

exec("start ConsoleApplication.exe", ....)
并在C++中添加一行:

getch();

感谢您的快速回复-但它仍然不起作用如何不起作用?您真的需要窗口吗?您是否检查了
error
参数回调已通过?一些更新:当前它将日志打印到与nodejs相同的控制台。我删除了控制台应用程序末尾的等待键输入。感谢帮助谢谢快速回复-但它仍然不起作用。它怎么不起作用?你真的需要这个窗口吗?你检查过回调传递的
error
参数了吗?一些更新:目前它将日志打印到与nodejs相同的控制台中。我删除了控制台应用程序末尾的等待键输入。谢谢帮助谢谢快速回复-但它仍然没有ot work它是如何工作的?你真的需要这个窗口吗?你检查了回调传递的
错误
参数了吗?一些更新:目前它将日志打印到与nodejs相同的控制台。我删除了控制台应用程序结尾处的等待键输入。谢谢帮助谢谢快速回复-但它仍然不起作用,我不是吗无法工作?您真的需要该窗口吗?您是否检查了回调传递的
error
参数?一些更新:当前它将日志打印到与nodejs相同的控制台中。我删除了控制台应用程序末尾的等待键输入。如果您添加了类似getch()的内容,感谢您的帮助或者cin>>keyToRead它不工作。删除它后-您可以看到控制台输出。无论如何,如果您添加了getch()或cin>>keyToRead之类的内容,则感谢您的回复。删除它后-您可以看到控制台输出。无论如何,如果您添加了getch()之类的内容,则感谢您的回复或者cin>>keyToRead它不工作。删除它后,您可以看到控制台输出。无论如何,感谢您的回复如果您添加了getch()或cin>>keyToRead之类的内容,它就不工作了。删除它后,您可以看到控制台输出。无论如何,感谢您的回复