我的印象是sigkill总是有效的?在我的程序中有一个信号处理程序,在按下CTRL C时显示一个退出提示,这很好,但是当我通过命令行杀死时,如何使它工作?现在杀戮命令什么也不做。我的代码中是否应该实现一些东西来实现kill?

最佳答案

不能为SIGKILL设置信号处理程序。
您的进程没有机会响应SIGKILL。立即单方面终止;该进程不能进行任何清理。O/S释放分配给它的资源,就像它释放给任何其他死进程一样。
参见posixSignal Concepts,和sigaction(),以及(尤其是)<signal.h>——这表示不能捕获或忽略SIGKILLSIGSTOP
哦,你说“我怎样才能做到这样,当我通过命令行杀人时,它也能工作”。你打算怎么杀了它?假设您在$pid中有pid,那么:

kill $pid

发送SIGTERM信号,您可以通过指定该信号来控制发送哪个信号。control-c键通常发送SIGINT,通常是2号信号。从键盘发送的另一个信号是SIGQUIT(control-\)或各种作业控制信号。
如果您使用:
kill -INT $pid

然后向进程发送一个中断(SIGINT)。默认值相当于kill -2 $pid。您将发送kill -TERM $pid,其中之一是:
kill -KILL $pid
kill -9 $pid

关于c - sigkill不会终止C程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35821137/

10-12 15:36