如果一个进程由于SIGTRAP信号而当前停止并且它通过kill()发送了一个SIGSTOP信号,那么默认行为是什么? SIGSTOP是否会在该过程再次继续后交付的待处理信号?或者它会被丢弃/忽略?
解决方法
从signal(7)手册页:
The signals SIGKILL and SIGSTOP cannot be caught,blocked,or ignored.
一个简单的测试,应用程序在断点处停止并向其发送SIGSTOP,显示gdb在我点击“下一个”时显示一些信息.信号显然已传递给应用程序.在我发送SIGCONT之前,它无法继续调试.
(gdb) next Program received signal SIGSTOP,Stopped (signal). fill (arr=0x7fffffffdff0,size=5) at tmp.cpp:28 (gdb) next Program received signal SIGCONT,Continued. fill (arr=0x7fffffffdff0,size=5) at tmp.cpp:28 (gdb) next (gdb)