Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
どこにも実用的な例が見つかりません。MinGWには_popen()ありますが、Windows APIを介して実装されているとのことなので、可能であるはずです。しかし、私が見つけることができるすべての例は、VisualC++ または C# などの他の新しい言語用です。
_popen()
たとえば、すべての stderr を赤色で表示する別のプログラムのラッパーを作成しようとしています。
あなたの場合、popen十分ではありませんpipe。ファイルハンドルforkを作成し、新しいプロセスを作成し、子プロセスで古い/closeを閉じ、新しい/へのパイプを複製し、パイプの最後のものを複製する必要があります新しいプログラムを開始する関数。FILENO_STDINFILENO_STDOUTdup2FILENO_STDINFILENO_STDOUTexec
popen
pipe
fork
close
FILENO_STDIN
FILENO_STDOUT
dup2
exec
つまり、基本的にpopen関数を再実装する必要があります。
これも非常に一般的で、インターネット上にはたくさんの例があります。