1

我在 while 循环中有一个 nanosleep 函数。这是我在“Linux 系统编程:直接与内核和 C 库对话”一书中找到的一个示例

    while(nanosleep(a, b) && errno==EINTR){
        struct timespec *tmp =a;
        a=b;
        b=tmp;
    }

工作完美,但我不确定如何检查 EINTR 以外的其他错误,以便我可以在屏幕上打印错误并退出程序。有任何想法吗?

4

1 回答 1

4

您可以简单地将返回值存储在循环条件中:

int ret;
while((ret = nanosleep(a, b)) && errno==EINTR){
    struct timespec *tmp =a;
    a=b;
    b=tmp;
}
if (ret) {
    perror("nanosleep");
    exit(1);
}
于 2013-03-07T19:59:51.370 回答