1

長時間実行されているCGIWebアプリケーションが、タブを途中で閉じることによって強制終了される場合を処理しようとしています。次に、シグナルtrapがそのイベントをキャッチし、ロックをクリーンアップします。

問題を示す縮小CGIを作成しました。

#!/bin/bash
exec 2>&1
cat <<END
Cache-Control: no-cache
Content-Type: text/html

END

trap "rm -f foo$$.log; exit" 1 2 3 6 9 14 15

while true
do
        date | tee -a foo$$.log
        echo '<br>'
        sleep 5
done

CGIをstraceすると、タブを閉じるとSIGKILLが発生することがわかりますがtrap、この場合、ログファイルをクリーンアップするためにIIUCが実行されていません。

これは、ApacheのCGIハンドラーがトラップできないを発行しているようなものkill -9です。親切な人が提案できる回避策やより良いアプローチはありますか?

4

0 に答える 0