我正在尝试通过过早关闭标签来处理长时间运行的CGI Web应用程序的情况。然后,信号trap
将捕获该事件并清理locks。
我写了一个简化的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,我可以看到它在选项卡上关闭时会收到SIGKILL,但是trap
IIUC没有被执行以便在此实例中清理日志文件。
就像Apache中的CGI处理程序发出的kill -9
是无法解决的。亲切的人可以建议的任何工作或更好的方法吗?