デバイスファイル「debug_port」は特定ポートの出力です。 3つのスクリプトがあります。
最初のスクリプトは、ログファイルにデータを書き込んでいる間、ポートからいくつかの情報を待ち、ログ内のいくつかのgrepを使用し、debug_portにエコーすることによってアクションを実行します。
#first.sh
pkill cat
cat debug_port > $logfile1 &
running=$!
# perform its tasks...
kill $running
killall -s SIGPIPE cat
pkill -P $$
rm $logfile1
2つ目は別の情報を待ち、別の操作を実行します。
#second.sh
pkill cat
cat debug_port > $logfile2 &
running=$!
# <<< there is problem: no output from 'debug_port'
# perform its tasks...
kill $running
rm $logfile2
発信者が順番に電話します。
#caller.sh
./first.sh
./second.sh
問題は、2番目のスクリプトに「debug_port」の出力がないことです。でも確かにそういうこともあると確信しています。
答え1
デバイスファイルを読み込んでいるとき。検索できない場合があります。単一ストリームです。その場合、あるプロセスから読み取ると、他のプロセスが同じバイトを読み取ることができなくなります。したがって、両方のプロセスで同時に読み取ってはいけません。
これを行う必要がある場合は、ストリームを分岐する必要があります。データをどこかに保存する必要があるため、実装によってはより多くのメモリRAM /ディスクを使用できます。メモリ使用量はプロセス間の関係によって異なります。