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