2009-06-29 4 views
0

: -합계 systecall 반환 오류

if (stat ("file",&stat_obj)){ 

    if (errno == ENOENT){ 
     printf("File not found"); 
    }else{ 
     printf("Unexpected error occured %d ",errno); 
    } 
} 
때로는

내가

"예기치 않은 오류가 0 발생" "같은 오류 메시지가

즉, "0"으로 오류가 발생했습니다. 파일 사용 권한을 확인했습니다.

그게 무슨 뜻입니까? 왜 이런 일이 발생하는지 이해할 수 없습니까?

의견이 있으십니까?

답변

1

이렇게 전화하면 의미있는 오류 메시지가 표시됩니까?

if (stat("file", &stat_obj) == -1) { 
     perror("stat"); 
    } 
+0

strerror (errno)하지만 성공을 반환합니다. – anish

1

프로그램에 신호 처리기가 있습니까? 그렇다면 errno에 영향을 미칠 수 있으므로 입력 후 errno을 저장하고 원래 값으로 복원 한 다음 반환해야합니다.

또한 #include <errno.h>을 확인하고 특히 프로그램이 다중 스레드 인 경우 errno을 직접 선언하지 않아야합니다. errno은 스레드 별 변수이므로 전역 변수로 선언하면 잘못된 값을 얻을 수 있습니다. (일부 플랫폼에서는 쓰레드 안전 errno를 위해 -D_TS_ERRNO과 같은 특별한 컴파일 플래그가 필요하지만 리눅스에서는 그런 플래그가 필요하지 않습니다.)

+0

좋은 제안과 아마 더 많은 정보가 없을 때 최선을 다할 수 있습니다. – Duck