差分

移動先: 案内検索

プロセス間通信

147 バイト追加, 2021年4月29日 (木) 15:03
/* 名前つきパイプ (named pipe) */
その前にパイプを説明しましょう。コマンドラインでのシェルが持つパイプは、前のコマンドの標準出力を後ろのコマンドの標準入力にするというものです。使い勝手は、まるっきりファイルです。
  現在のディレクトリにあるファイル数をカウントする<pre class="bash">
% ls | wc
</pre>
名前付きパイプのファイルを作る
<pre class="bash">
$ mkfifo np
$ ls -l np
$ ls -F np
np|
</pre>
この状態で2つのshellウインドウを開いてみてください。一つはnpを読む、もう一つではnpに書き込むことをしてみます。
shellウインドウ1<pre class="bash">
$ cat np
abcdef <-- 表示される
123456 <-- 表示される
$ <-- 終了する
</pre> shellウインドウ2<pre class="bash">
$ cat > np
abcdef <--入力
^D <-- ^Dで終了
$
</pre>
ここでは判りやすいように一方向にデータを送っている例を出していますが、このようにファイル名でアクセスするようにしてプロセス間の通信が出来るというのは、実にUNIXらしいやり方です。プログラム中から名前つきパイプを作る時はユーザ関数 mkfifo(3)で作れます。