我正在尝试处理长时间运行的 CGI Web 应用程序因过早关闭选项卡而被终止的情况。然后一个信号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
无法捕获的。各位好心人可以建议任何解决方法或更好的方法吗?