1

状況は、system()またはからプログラムを開始したことCreateProcess()です。

さて、そのプログラムがコンソールにデータを出力するので、何かをすることは可能ですか。つまり、プログラムがそれを出力するということです。これは、終了を待ってデータを収集してから処理するのではなく、この外部プログラムが印刷したいデータを使用してコンソールを呼び出した瞬間に、そのデータを取得して処理し、別のものを出力します。コンソール。

4

3 に答える 3

1

最も簡単な方法は、通常、プログラムを で開始すること_popen(your_program, "r");です。それはあなたが読むことができる を返し、FILE *それが読み取るものは、子がその標準出力に書き込むものです。そのファイルを読むEOFと、子プロセスが終了したことを意味します。これにより、子からの出力をリアルタイムで読み取り、処理することが比較的簡単になります。

于 2012-06-07T17:01:57.147 に答える
0

Linuxでは、名前付きパイプを作成します。

system("mkfifo pipename")

次に、最初のプログラムでパイプを開き、次のコマンドでプログラムを開始します。

system("program > pipename")

Windowsでこれを行う方法がわかりません。

于 2012-06-07T16:22:19.860 に答える
0

子プロセスを作成する前に AllocConsole を呼び出すか、(親プロセスで) AttachConsole(ChildPID) 関数を使用します。その後、任意の ReadConsoleXXX または WriteConsoleXXX 関数を使用できます。

于 2012-06-08T05:59:27.680 に答える