POSIX信号行为

aye*_*der 7 c posix signals kill

如果一个进程当前由于SIGTRAP信号而停止,并且它通过kill()发送了一个SIGSTOP信号,那么默认行为是什么?SIGSTOP是否会在该过程再次继续后交付的待处理信号?或者它会被丢弃/忽略?

如果SIGSTOP排队,是否有任何方法可以从该进程外部将其从队列中删除,例如在跟踪过程中?

Sté*_*ane 3

来自 signal(7) 手册页:

The signals SIGKILL and SIGSTOP cannot be caught, blocked, or ignored.
Run Code Online (Sandbox Code Playgroud)

对应用程序在断点处停止并向其发送一个简单的测试,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) 
Run Code Online (Sandbox Code Playgroud)