我想寫一個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