如何检查nanosleep循环中的错误

时间:2013-03-07 19:56:52

标签: c unix sleep

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

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

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

1 个答案:

答案 0 :(得分:4)

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

int ret;
while((ret = nanosleep(a, b)) && errno==EINTR){
    struct timespec *tmp =a;
    a=b;
    b=tmp;
}
if (ret) {
    perror("nanosleep");
    exit(1);
}