【发布时间】:2017-02-14 15:12:44
【问题描述】:
我正在尝试编写一个 C++ 程序,它将像守护进程一样启动新进程(一些脚本、程序、命令)并从中获取一些信息(标准输出)。我正在尝试使用 popen()。但子进程在主程序完成时完成。我不知道,C++ 是否有像 Python(子处理)这样易于使用的东西。有我的代码:
#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) 是什么以及您想要的输出是什么。这将有助于重现问题。 -
我会说这不是一个通信问题:当父进程停止时,它的子进程也会停止,除非他们采取了预防措施。这是标准行为,与 C/C++ 无关。如果您让父进程从“in”读取直到子进程完成,那将解决第一个问题。
-
您可能还希望将您的问题标签缩小到 POSIX 操作系统或 Linux 或您所针对的任何操作系统(即 Microsoft Windows 有不同的 API 来运行子进程)
标签: c++ subprocess popen