私はデーモンのような新しいプロセス(スクリプト、プログラム、コマンド)を起動し、そこからいくつかの情報(stdout)を取得するC++プログラムを作成しようとしています。私は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:エグゼクティブコマンドの最後に&を助けていません。 popenの機能のため
入力が( 'ARGV [1]')何であったかを追加、出力( 'buff'が)何をしたし、あなたに出力を望んでいたものをさあ。それは問題を再現するのに役立ちます。 – Matt
これは通信上の問題ではないと言います。親プロセスが停止すると、予防処置を講じない限り子プロセスも停止されます。これは標準的な動作であり、C/C++固有のものはありません。子プロセスが終了するまで、親プロセスが 'in'から読み込んだ場合、これはこの最初の問題を解決します。 – Rene
問題のタグをPOSIXオペレーティングシステムやLinuxなどの対象とする対象にすることもできます(つまり、Microsoft Windowsには子プロセスを実行するAPIが異なります) – roalz