【发布时间】:2011-02-02 06:02:33
【问题描述】:
当程序收到终止信号时,您如何处理清理工作?
例如,我连接的一个应用程序希望任何第三方应用程序(我的应用程序)在注销时发送finish 命令。当我的应用被 kill -9 销毁时,发送 finish 命令的最佳说法是什么?
edit 1:kill -9 无法被捕获。谢谢你们纠正我。
edit 2:我想这种情况是当一个调用只是 kill 这与 ctrl-c 相同
【问题讨论】:
-
kill -9对我来说意味着:“走吧,肮脏的过程,带走你!”,过程将停止。马上。 -
在我知道的大多数 *nixes 上,kill -9 不能被任何程序拦截和优雅地处理,无论它是用什么语言编写的。
-
@Begui:除了其他人的评论和回答之外,如果您的 Unx 操作系统不会立即杀死 *并重新获得所有资源 被 kill -9'ed 的程序使用,嗯...操作系统坏了。
-
关于 kill -9 命令,手册页更准确地说:“9 KILL (non-catchable, non-ignorable kill)”。 SIGKILL 由操作系统而不是应用程序处理的信号。
-
只是
kill和Ctrl-C不一样,因为kill没有指定发送哪个信号会发送SIGTERM,而Ctrl-C发送SIGINT。