/ / popenを使用して入出力を同時に行う方法は? [複製] - c、linux、unix、pipe

同じ時間にpopenを使用して入出力する方法は? [複製] - c、linux、unix、pipe

私は擬似コードを使って自分がしたいことを表現しています:

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は2

popen()は新しいプロセスからしか読み込めません。読み書きが必要な場合は、

  • 新しいプロセスに接続するパイプを作成する pipe().
  • 新しいプロセスを使用してフォークする fork()
  • プロセスの入力と出力を、以前に作成したパイプにリダイレクトします。 dup2()
  • 子プロセス(新しいプロセス)でexecを呼び出す exec 家族機能