有谁能够告诉我,如果多线程程序则mq_send的执行过程中接收到SIGSTOP信号会发生什么?

有帮助吗?

解决方案

在手册页mq_send指示它是在mq_timedsend,这是在Linux的系统呼叫的基础上实现。系统调用是通常原子在他们成功或他们不这样做。如果一个系统调用信号中断,通常的行为是返回-1,并设置errnoEINTR。它看起来像recv有这种行为。

基本上,你应该检查select,如果它以这种方式失败重试呼叫。这是系统调用可能阻塞等<=>或<=>特别重要,因为它们具有被中断的机会较高。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top