关于如何捕获关闭我的程序正在运行的终端窗口的任何想法? 虽然我在这里,任何方式来捕获当计算机关闭,但程序仍在运行,或者如果用户注销?C如何捕获关闭终端
回答
尝试捕捉SIGTERM。请注意,您无法捕获SIGKILL,这可能是一段时间后关机期间发生的情况。我发现这个really nice post也解释了一些差异。
[更新]在这里的长处,但测试如果std-in/out仍然是开放和良好的呢?当终端死掉时,应该放弃这些文件描述符。免责声明,这是最好的猜测。
就像我说的,我试着测试捕获所有的各种信号。 SIGTERM我geuss会为Shutdown工作,还没有测试过,但它肯定不会结束终端...任何想法? – user657178 2011-06-02 13:17:51
也许你的程序在控制台没有被真正杀死的时候。你应该能够验证,但无论哪种方式尝试测试标准输入/标准输出,看他们是否仍然“活着”。这是我得到的最好的。 – 2011-06-05 23:07:15
如果在Unix/Linux上:你看看SIGTERM吗?这至少是关机期间发送给您的。
SIGTERM可能会用于关机,我还没有测试......但它绝对不能用于关闭终端,这对我来说现在更重要......任何想法? – user657178 2011-06-02 13:18:48
你可以试试atexit()函数吗?(见注释)
或者看看这个帖子在这里:Signals received by bash when terminal is closed
atexit仅用于正常的程序终止,它被定义为“通过调用exit()或从main()返回” – 2011-06-01 21:42:03
我的不好,你是完全正确的。 – Gui13 2011-06-01 21:45:23
从我的测试......,关闭终端时,我的程序接收到信号是1或SIGHUP
说SIGTERM错误的答案。 SIGHUP是终端关闭时发送的信号。 – 2016-04-26 12:34:04
- 1. 终端关闭开
- 2. 如何关闭终端中的回声?
- 3. 如何捕获XMLHttpRequest的所有终端
- 4. Linux终端:如何捕获或观看其他终端会话
- 5. 捕获tabpage关闭事件
- 6. exo-open在终端脚本 - 程序关闭终端
- 7. 使用python终端关闭程序
- 8. 监听终端会话“关闭”事件
- 9. 终端打开,然后立即关闭
- 10. 关闭ssh终端后模板丢失
- 11. 怎么看从以前关闭终端
- 12. Bash脚本捕获输出到终端
- 13. C#Com端口关闭
- 14. [Golang]客户端rabbitMQ意外关闭TCP连接,如何捕获或修复它?
- 15. 从Python中的终端关闭事件中获取信号
- 16. PHP CLI:我如何拦截终端窗口/制表符关闭?
- 17. 如何在MacOS中关闭终端的逃生?
- 18. 如何使用AppleScript关闭终端选项卡?
- 19. 如何检查Macbook Lid是否通过终端关闭?
- 20. 如何在程序终止的情况下关闭端口?
- 21. 如何关闭OSX终端输出ls的颜色OFF
- 22. 如何让killall关闭进程所在的终端?
- 23. 如何关闭并重新打开码头终端
- 24. 如何在Ubuntu中使用终端关闭Android Studio
- 25. 如何在Ruby中捕获终端箭头键?
- 26. 如何捕获终端发送的转义序列?
- 27. 如何在Safari关闭之前捕捉窗口关闭?
- 28. 如何始终关闭hl-line-mode,即全局关闭
- 29. C# - 形式组合框捕捉关闭
- 30. 当主终端关闭时程序终止
哪些操作系统? – 2011-06-01 21:37:30
如果电源立即切断,该怎么办?是否需要立即清理,还是有可能在下一次开始清理时清理? – 2011-06-01 21:40:31
@Neil:Linux,@Roland电源切断可以看作是一种特殊情况,所以我不能处理那个 – user657178 2011-06-02 13:16:41