バックグラウンドプロセスが終了したときに検出する必要があります。したがって、私はトラップを設置しました。 run_gui
とrun_ai1
は単純なexec
関数です。プロセスが終了したときにSIGCHLDが配信されない
run_gui & gui_pid=$!
run_ai1 & ai1_pid=$!
trap 'echo foo' SIGCHLD
while true; do
echo "Started the loop"
while true; do
read -u $ai1_outfd line || echo "Nothing read"
if [[ $line ]]; then
: # Handle this
fi
done
while true; do
read -u $gui_outfd line || echo "nothing read"
if [[ $line ]]; then
: # Handle this
fi
done
done
GUIを閉じると何も起こりません。 echo foo
コマンドは、Ctrl + Cを押した場合にのみ実行されます。
なぜSIGCHLD
が見つからないのですか?
これは何も変わりません。 'read'がいくつかの入力を待っていることは重要ですか? – marmistrz