有关如何捕获关闭程序运行的终端窗口的任何想法? 虽然我正在使用它,但是当计算机关闭但程序仍在运行时,或者用户注销时,是否有任何捕获方式?
答案 0 :(得分:2)
尝试捕获SIGTERM。请注意,您无法捕获SIGKILL,这可能是在一段时间后关闭期间发生的情况。我发现这个really nice post也解释了一些差异。
[更新] Longshot在这里,但测试std-in / out是否仍然开放且好?当终端死亡时,应该废弃那些文件描述符。免责声明,这是最好的猜测。
答案 1 :(得分:2)
如果在Unix / Linux上:您是否看过SIGTERM?这至少是在关机期间发送给您的那个。
答案 2 :(得分:2)
你可以试试atexit()函数吗?(见评论)
或者在这里查看这篇文章:Signals received by bash when terminal is closed
答案 3 :(得分:1)
从我的测试中......关闭终端时我的程序收到的信号是1或SIGHUP