0

どこにも実用的な例が見つかりません。MinGWには_popen()ありますが、Windows APIを介して実装されているとのことなので、可能であるはずです。しかし、私が見つけることができるすべての例は、VisualC++ または C# などの他の新しい言語用です。

たとえば、すべての stderr を赤色で表示する別のプログラムのラッパーを作成しようとしています。

4

1 に答える 1

1

あなたの場合、popen十分ではありませんpipe。ファイルハンドルforkを作成し、新しいプロセスを作成し、子プロセスで古い/closeを閉じ、新しい/へのパイプを複製し、パイプの最後のものを複製する必要があります新しいプログラムを開始する関数。FILENO_STDINFILENO_STDOUTdup2FILENO_STDINFILENO_STDOUTexec

つまり、基本的にpopen関数を再実装する必要があります。

これも非常に一般的で、インターネット上にはたくさんの例があります。

于 2012-06-11T12:45:29.813 に答える