在Unix中,一个正在运行的进程什么时候可以接收到SIGTRAP(值为5)信号?

ivqmmu1c  于 8个月前  发布在  Unix
关注(0)|答案(2)|浏览(115)

在我的代码中有一个名为NSM的进程。它突然收到信号陷阱信号,然后被杀死了。所以只是想知道什么时候进程可以得到SIGTRAP信号?

rhfm7lfc

rhfm7lfc1#

正如评论中所说,这是一个信号,可以随时触发。SIGTRAP信号由调试器处理;在没有调试器的情况下,进程被终止是很自然的。如果你在项目中使用静态库,那么你没有正确地链接它们。如果你的问题没有进一步的信息,我建议你检查你与图书馆的链接。

q3qa4bjr

q3qa4bjr2#

有些库在出现严重错误时会引发SIGTRAP。
例如,在GLIB中,加入线程的g_thread_join()服务依赖于底层PTHREAD库中的pthread_join()。为了防止死锁,后者会检查是否有两个线程试图相互连接,或者当前线程试图连接自己。如果发生任何一种情况,则将EDEADLKerrno返回给调用方。在出现这种错误时,调用GLIB会引发一个SIGTRAP信号。因此,如果调试器附加到正在运行的进程,则允许调试问题。

相关问题