複数のプロセスを使用してFIFOに書き込む

複数のプロセスを使用してFIFOに書き込む

mkfifoを使用して名前付きパイプを作成する必要があります。たとえば、

mkfifo mypipe

パイプから読み取るシステムサービス(単純なシェルスクリプト)を作成し、write-to-pipe.sh同じパイプを呼び出す別のスクリプト(たとえば)を作成します。

write-to-pipe.shパイプに同時に複数の書き込みインスタンスがある場合はどうなりますか?私の言葉は、多くのユーザーがそれを行うことができるということですwrite-to-pipe.sh。 2人のユーザーが同時にパイプに書き込もうとすると問題が発生します(たとえば、2人のユーザーが通常のファイル(パイプではない)に書き込もうとし、そのうちの1人が別のファイルを上書きする場合)。

重複しないことを願っていますが、この質問に対する答えが見つかりません...

ありがとう

ベストアンサー1

私が実行した簡単なテストは次のとおりです。

mkfifo foo
yes "Process 1 reporting" > foo & yes "This is process 2" > foo &
awk '!a[$0]++' < foo

awkから得られた出力は次のようになります。

Process 1 reporting
Process 1 reportThis is process 2
This is process 2
This is pring
Process 1 reportocess 2
ing
ocess 2
This is prProcess 1 reporting

おすすめ記事