有时当我调试时,我会收到这样的消息。
Program received signal SIG44, Real-time event 44.
这是什么意思?
wljmcqd81#
信号是由内核发送给进程的消息,用于通知进程系统中发生了某种事件。Linux上常用的信号有SIGINT(值2,从键盘中断)或SIGKILL(值9,删除程序)。当内核检测到一个系统事件时(比如被零除是SIGFPE,值为8),或者当一个进程调用kill()函数来显式告诉内核向一个进程(或者向调用kill()的进程本身)发送一个信号时,就会收到信号。信号通常可以被进程捕获,以便执行某些操作。因此,为了回答您的问题,代码最有可能调用kill()函数,并在发生某种情况时向其发送值为44的信号。既然您收到了该消息,则意味着进程已收到信号,并将退出或执行代码中所写的操作,以防信号到来。与标准信号不同,实时信号没有预定义的含义:整个实时信号集都可以用于应用程序定义的目的。(但是请注意,LinuxThreads实现使用前三个实时信号。)报价来源here
4xy9mtcn2#
GNU C++库使用SIG44在发送条件变量信号时唤醒休眠线程。
2条答案
按热度按时间wljmcqd81#
信号是由内核发送给进程的消息,用于通知进程系统中发生了某种事件。
Linux上常用的信号有SIGINT(值2,从键盘中断)或SIGKILL(值9,删除程序)。
当内核检测到一个系统事件时(比如被零除是SIGFPE,值为8),或者当一个进程调用kill()函数来显式告诉内核向一个进程(或者向调用kill()的进程本身)发送一个信号时,就会收到信号。
信号通常可以被进程捕获,以便执行某些操作。
因此,为了回答您的问题,代码最有可能调用kill()函数,并在发生某种情况时向其发送值为44的信号。既然您收到了该消息,则意味着进程已收到信号,并将退出或执行代码中所写的操作,以防信号到来。
与标准信号不同,实时信号没有预定义的含义:整个实时信号集都可以用于应用程序定义的目的。(但是请注意,LinuxThreads实现使用前三个实时信号。)
报价来源here
4xy9mtcn2#
GNU C++库使用SIG44在发送条件变量信号时唤醒休眠线程。