捕获所有会停止程序的信号
Catch all signals that would stop a program
我有一个程序可以捕捉任何终止信号。目前它所做的只是捕捉Ctrl + C。我希望能够捕捉 Ctrl + Z 和 Ctrl + \ 除了 Ctrl + C .这是我的部分代码。
if (signal(SIGINT, SIG_IGN) == SIG_ERR)
fprintf(stderr,"Error: Can't catch SIGINT\n");
if (signal(SIGTERM, SIG_IGN) == SIG_ERR)
fprintf(stderr,"Error: Can't catch SIGTERM\n");
// do stuff
我还需要执行哪些其他信号才能捕获 Ctrl + Z 和 Ctrl + \?是什么引发了 SIGTERM
?提前致谢。
Ctrl+Z 引发 SIGTSTP。 Ctrl+\ 引发 SIGQUIT。
我不知道有任何组合键会引发 SIGTERM,但是您当然可以使用 kill -TERM <pid>
将 <pid>
替换为进程 ID 来发送它。 (或者只是 kill <pid>
;SIGTERM 是 kill
的默认信号)
请注意,您无法捕获 SIGSTOP 或 SIGKILL。
我有一个程序可以捕捉任何终止信号。目前它所做的只是捕捉Ctrl + C。我希望能够捕捉 Ctrl + Z 和 Ctrl + \ 除了 Ctrl + C .这是我的部分代码。
if (signal(SIGINT, SIG_IGN) == SIG_ERR)
fprintf(stderr,"Error: Can't catch SIGINT\n");
if (signal(SIGTERM, SIG_IGN) == SIG_ERR)
fprintf(stderr,"Error: Can't catch SIGTERM\n");
// do stuff
我还需要执行哪些其他信号才能捕获 Ctrl + Z 和 Ctrl + \?是什么引发了 SIGTERM
?提前致谢。
Ctrl+Z 引发 SIGTSTP。 Ctrl+\ 引发 SIGQUIT。
我不知道有任何组合键会引发 SIGTERM,但是您当然可以使用 kill -TERM <pid>
将 <pid>
替换为进程 ID 来发送它。 (或者只是 kill <pid>
;SIGTERM 是 kill
的默认信号)
请注意,您无法捕获 SIGSTOP 或 SIGKILL。