/* -*- MaTX -*- * * 【名前】 * popen() - パイプをオープンする * * 【形式】 * pd = popen(cmd) * Integer pd; * String cmd; * * 【機能説明】 * popen(cmd)は,文字列 cmd で指定したプロセスを起動し,そのプロセス * との間にパイプをオープンする。オープンに成功すると正の整数(プロセス * ディスクリプタ),オープンに失敗すると負の整数を返す。 * * プロセスディスクリプタは,ファイルディスクリプタと同様に扱え, * fprintf() や fscanf() の第 1 引数に指定できる。以後,プロセス * ディスクリプタによってプロセスを指定する。fprintf() で出力した * データは起動されたプロセスの標準入力に送られ,そのプロセスが * 標準出力に出力したデータは fscanf() で入力できる。不要になった * パイプは pclose() で閉じる。 * * 【例題】 * UNIXの演算用言語 bc とのプロセス間通信の例を次に示す。 * この例では,"3 + 4" を fprintf() で bc に送り,計算結果を * fscanf() で取り込む。 * * if ((pid = popen("bc")) < 0) { * error("Can't open %s", "bc"); * } * fprintf(pid, "3 + 4\n"); * {a} = fscanf(pid, "%d"); * fprintf(pid, "quit\n"); * pclose(pid); * * 【関連項目】 * pclose(), fprintf(), fscanf() */