2013-03-07 1 views
1

나는 while 루프에서 나노 슬립 기능을 가지고 있습니다. "커널과 C 라이브러리에 직접 이야기 리눅스 시스템 프로그래밍"나노 슬립 루프의 에러를 확인하는 방법

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

하는 것은 완벽하게 작동하지만 난 내가 인쇄 할 수 있도록 EINTR 이외의 오류를 검사 할 수있는 방법 확실하지 않다 이것은 내가 책에서 발견 한 예이다 오류가 화면에 나타나면 프로그램을 종료하십시오. 어떤 아이디어?

답변

4

당신은 단순히 루프 상태로 반환 값을 저장할 수 있습니다 :

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

을 당신은 실제로 너무 RET 설정해야합니다 ... –

+0

동안 (RET = 인 nanosleep (A, B) &&의 errno == EINTR) 권리? – xwhyz

+1

예 - 복사 붙여 넣기 실명 – user4815162342

관련 문제