使用sigwait时我们应该关心EINTR吗?

时间:2012-08-15 06:24:11

标签: c multithreading signals

在多线程应用程序中,所有线程都阻塞所有信号,单个线程在sigwait的循环中处理信号。现在我们应该在其他线程中使用EINTRread等系统调用后考虑write吗?

while (true)
{
    num = read(fd, buf, size);
    if (num == -1 && errno == EINTR)
        continue;
    else if (num > 0)
        /* handle the buf and read more */
}

1 个答案:

答案 0 :(得分:3)

仅当系统调用被信号处理程序中断时,才会返回

EINTR。如果所有信号在进行系统调用的线程的信号掩码中被阻塞,则不会发生这种情况。