2 つの FIFO 間の入出力通信を可能にする IO スクリプトをセットアップしようとしています (1 つの FIFO は入力用で、もう 1 つは出力用です)。
入力を入力している間、サーバーが出力を受信する必要があります。Internals/servout
とはどちらInternals/servin
も FIFO です。tail
現在、入力を待っている間にバックグラウンドで実行することでこれを実装しています。
これは私の現在のコードです:
#!/bin/bash
# io.sh
tail -f -n 0 Internals/servout &
tpid=$!
read -p ">> " v
while [ $? -eq 0 ] && [ "$v" != "exit" ] && [ "$v" != "quit" ]; do
echo $v > Internals/servin
sleep .2
read -p ">> " v
done
kill $tpid
私が直面している主な問題は、誤って Ctrl-C を入力してスクリプトを終了したときです。この場合、tail -f -n 0 Internals/servout &
コードは引き続きバックグラウンドで実行されます。ご想像のとおり、それは望ましくありません。
tail
SIGINT または同様の信号が送信された場合でも、コマンドが確実に強制終了される方法はありますか? finally
Pythonのキーワードと同じ目的を果たしたりtail
、$$
.
私の悪い習慣について自由にコメントしてください -bash
は私の新しい言語の 1 つであり、建設的な批判は改善するための最も簡単な方法です。