1

while ループに nanosleep 関数があります。これは、本「Linux System Programming: Talking Directly to the Kernel and C Library」で見つけた例です。

    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 に答える