set -T
bashの意味は何ですか?それは何をするためのものか?Unixのトラップに関連していると思いますが、よくわかりません。
フォアグラウンドの子がまだ実行されている間にトラップがすぐに呼び出される場合、そのような構造の多くはより単純になります。問題について「何か」を行うトラップハンドラをインストールするだけで、SIGINT(またはSIGQUIT)を押すたびに呼び出されます。Cプログラムのシグナルハンドラが即座に呼び出されるように。たぶん私はCプログラマーにすぎますが、shの遅延動作は非常に直感的ではないと思います。
#! /bin/sh onsig() { trap SIGINT kill -SIGINT $$ } set -T # set async execution of traps on FreeBSD trap onsig SIGINT ./some-blocking-program set +T # set traps execution behaviour back to normal
これにより、トラップハンドラーが少し複雑になりますが、プログラムがブロックして適切なアクションをとることを意識せずに、通常どおりシェルスクリプトの主要部分を記述できます。
たぶん、この質問はあなたにとって興味があるでしょう:stackoverflow.com/questions/6928946/…(errtraceについて)
—
hmontoliu