我想写一个C++程序,它将启动新进程(一些脚本,程序,命令)像守护进程,并从它(stdout)获取一些信息。我正在尝试使用popen()。但主程序完成后子程序正在完成。我不知道,C++是否有像Python一样易于使用的东西(子处理)。有我的代码:子流程通讯。 C++
#include <stdio.h>
#include <iostream>
using namespace std;
int main(int argc, char *argv[]) {
FILE *in;
char buff[512];
in = popen(argv[1], "r");
fgets(buff, sizeof(buff), in);
cout << buff;
}
P.S:&在执行命令结束时并没有帮助。
添加什么样的输入('的argv [1]')是,你想输出什么输出('buff')是什么是。这将有助于重现问题。 – Matt
我会说这不是一个沟通问题:当父进程停止时,其子进程也会停止,除非他们采取了预防措施。这是标准的行为,没有特定的C/C++。如果你的父进程从'in'中读取,直到子进程完成,这将解决第一个问题。 – Rene
您可能还想要将标记缩小到POSIX操作系统或Linux或您所针对的任何操作系统(即Microsoft Windows具有不同的API来运行子进程) – roalz