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