请问如果多线程程序在执行 mq_send 时收到 SIGSTOP 信号会发生什么?
请问如果多线程程序在执行 mq_send 时收到 SIGSTOP 信号会发生什么?
mq_send
的man页面指出它是在Linux上实现的,基于mq_timedsend
系统调用。系统调用通常是原子性的,即它们要么成功,要么失败。如果系统调用被信号打断,则通常会返回-1并设置errno
为EINTR
。看起来mq_send
也有这个行为。EINTR
,如果以这种方式失败,则重试调用。对于可能阻塞的系统调用(例如recv
或select
),这一点尤其重要,因为它们更有可能被中断。