Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
谁能告诉我如果多线程程序在执行 mq_send 期间收到 SIGSTOP 信号会发生什么?
的手册页表明它是在 Linux 中的系统调用mq_send之上实现的。mq_timedsend系统调用通常是原子的,因为它们要么成功,要么不成功。如果系统调用被信号中断,通常的行为是返回 -1 并设置errno为EINTR。看起来mq_send有这种行为。
mq_send
mq_timedsend
errno
EINTR
基本上,您应该检查EINTR,如果以这种方式失败,则重试呼叫。这对于可能阻塞 like recvor的系统调用尤其重要select,因为它们被中断的可能性更高。
recv
select