私は擬似コードを使って自分がしたいことを表現しています:
FILE* fd = popen("/bin/cat", ...);
Write some data to the stdin of `/bin/cat` using fd;
Read all data from the stdout of `/bin/cat` using fd;
出来ますか?
回答:
回答№1は2popen()は新しいプロセスからしか読み込めません。読み書きが必要な場合は、
- 新しいプロセスに接続するパイプを作成する
pipe()
. - 新しいプロセスを使用してフォークする
fork()
- プロセスの入力と出力を、以前に作成したパイプにリダイレクトします。
dup2()
- 子プロセス(新しいプロセス)でexecを呼び出す
exec
家族機能