谁能告诉我在执行mq_send期间多线程程序收到SIGSTOP信号会发生什么情况?
最佳答案
mq_send
的手册页指示它是在mq_timedsend
之上实现的,errno
是Linux中的系统调用。系统调用通常是原子的,因为它们要么成功要么不成功。如果系统调用被信号中断,通常的行为是返回-1并将EINTR
设置为mq_send
。看来EINTR
具有此行为。
基本上,您应该检查recv
,并以这种方式失败后重试该调用。这对于可能像select
或ojit_code这样可能阻塞的系统调用尤为重要,因为它们被中断的可能性更高。