next up previous contents index
Next: ファイルのアクセス権を調べる Up: ファイル Previous: プロセスの終端の検出

プロセス間通信

ファイルと同様にプロセスをオープンpopen()し, データをプロセスに送ったり(fprintf())したり, データをプロセスから受け取ったり(fscanf())できる。 プロセスをpopen()でオープンしたあとは, プロセスディスクリプタによってプロセスを指定する。 これは,ファイルディスクリプタと同様に扱える。 通信が不要になったプロセスはpclose()によって終了する。           プロセスディスクリプタを用いたプロセス間通信の例を次に示す。

  if ((pid = popen("bc")) < 0) {
      error("Can't open %s", "bc");
  }
  fprintf(pid, "3 + 4¥n");
  {a} = fscanf(pid, "%d");
  print a;
  pclose(pid);


次に,gnuplotとのプロセス間通信の例を示す。


  if ((pid = popen("gnuplot -title sample")) < 0) {
      error("Can't open %s", "gnuplot");
  }
  fprintf(pid, "plot sin(x)¥n");
  pause;
  fprintf(pid, "quit¥n");
  pclose(pid);
}




Masanobu KOGA 平成10年8月19日