私はPOSIX(OSX)用のプログラムを書いています。ここでは、本質的にロギングスレッドである1つのリスナーにメッセージを送信する多くのプロセスがあります。すべてのプロセスは個別のプログラムで実行され、多くのプロセスが書き込む単一の名前付きパイプ (FIFO) を使用しますが、単一のプロセスのみが読み取りを行うのは非常に魅力的です。
質問:
1) これは機能しますか? - bash を使用して、複数のプロセスが書き込みを行う fifo をセットアップすることで、これを機能させることができるので、理論的にはこれが機能することがわかっています。しかし、実際には、私が見落としている問題はありますか?
シェル #1
$ mkfifo /tmp/fifo
$ cat /tmp/fifo
シェル #2 と #3
$ cat > /tmp/fifo
"Type stuff here, after hitting enter, it is read by shell #1"
2) 各ライターが比較的短いメッセージ (< 100 バイト?) のみを書き込む場合、 write() への各呼び出しが全体としてリーダーに送信されると想定できますか? それとも、あるメッセージの半分が、別のライターからの別のメッセージの半分で文字化けする危険がありますか?
アドバイスをありがとう。