我的印象是sigkill
总是有效的?在我的程序中有一个信号处理程序,在按下CTRL C时显示一个退出提示,这很好,但是当我通过命令行杀死时,如何使它工作?现在杀戮命令什么也不做。我的代码中是否应该实现一些东西来实现kill?
最佳答案
不能为SIGKILL
设置信号处理程序。
您的进程没有机会响应SIGKILL
。立即单方面终止;该进程不能进行任何清理。O/S释放分配给它的资源,就像它释放给任何其他死进程一样。
参见posixSignal Concepts,和sigaction()
,以及(尤其是)<signal.h>
——这表示不能捕获或忽略SIGKILL
和SIGSTOP
。
哦,你说“我怎样才能做到这样,当我通过命令行杀人时,它也能工作”。你打算怎么杀了它?假设您在$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/