在 C++ 中使用系统打开程序后程序卡住

Program Get Stuck After Opening a Program Using System in c++

我想用 C++ 代码打开一个程序(有像 CMD 这样的终端),但是当我尝试 System() 并且那个程序打开时,我的 C++ 代码卡住了,直到我关闭程序和其余的代码将执行。我想打开一个终端程序,打开后,我想向程序发送一些命令来执行它。 我怎样才能:

1 - 在调用 System() 函数后继续 C++ 代码的其余部分

2 - 发送命令以使用 C++ 代码进行编程。

3 - 接收命令结果

这是我使用的简单代码:

#include <iostream>

int main()
{
    system("path of the program");
    
    while(true)
    {
        // some commands that I want to send to terminal
        // receive result 
        //....
    }
}

Windows C 运行时库中的 system 函数正在“阻塞”。这意味着 system 命令不会 return 直到你的程序 运行 退出。如果您必须从您的 C++ 代码中打开一个程序,您将需要为其启动一个新进程,以便您的代码可以继续 运行(有关如何执行此操作的一些信息,请参阅 this answer) .

要在您的两个程序之间发送和接收信息,您需要实施某种形式的进程间通信 (ipc)。请参阅 this reference 了解如何开始。