ファイルから "cat"を何度も呼び出します。

ファイルから

デバイスファイル「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 /ディスクを使用できます。メモリ使用量はプロセス間の関係によって異なります。

おすすめ記事