mkfifo

mkfifoは、名前付きパイプを作成する・・・。

Man page of MKFIFO

親プロセスと子プロセスの関係なら、forkでpipeを共有できるが、全く関係ない2つ以上のプロセス間で通信する場合は、名前付きパイプを使う・・・。
名前付きパイプはファイルのようなもので、lsコマンドで存在を確認できる・・・。

mkfifo1.cで、mkfifo1からmkfifo2への名前付きパイプ"TEST1"、mkfifo2からmkfifo1への名前付きパイプ"TEST2"を作る・・・。

3秒待って、TEST1にmsgを書き込む・・・。

3秒後(mkfifo2から見たら6秒後)にTEST1からbufに読み込む・・・。
で出力・・・。

その3秒後、TEST2に書き込む・・・。

mkfifo1からみて12秒後、TEST2からbufに読み込んで出力・・・。

mkfifo1は、3秒後に、

$ ./mkfifo1
mkfifo1 fd[1]: I am mkfifo1!

となり、その3秒後に

$ ./mkfifo2
mkfifo2 fd[0]: I am mkfifo1!

さらに3秒後、

$ ./mkfifo2
mkfifo2 fd[0]: I am mkfifo1!
mkfifo2 fd[1]: I am mkfifo2!
$

さらに3秒後、

$ ./mkfifo1
mkfifo1 fd[1]: I am mkfifo1!
mkfifo1 fd[0]: I am mkfifo2!
$

となる・・・。

Sample/unixsyscall/mkfifo/mkfifo/src/mkfifo at master · bg1bgst333/Sample · GitHub