谁能告诉我在执行mq_send期间多线程程序收到SIGSTOP信号会发生什么情况?

最佳答案

mq_send的手册页指示它是在mq_timedsend之上实现的,errno是Linux中的系统调用。系统调用通常是原子的,因为它们要么成功要么不成功。如果系统调用被信号中断,通常的行为是返回-1并将EINTR设置为mq_send。看来EINTR具有此行为。

基本上,您应该检查recv,并以这种方式失败后重试该调用。这对于可能像select或ojit_code这样可能阻塞的系统调用尤为重要,因为它们被中断的可能性更高。

10-07 19:51