2017-10-13 1 views
1

fopen을 사용하여 읽기 위해 파일을 열었지만 fgets가 실패합니다. 내 함수가 적절하게 errno를 설정하기를 원한다.fgets 실패에 사용할 가장 정확한 errno 값은 무엇입니까?

파일 작업과 관련된 errno 값이 많이 있지만 "이 값을 읽는 동안 문제가 발생했습니다." fgets는 또한 errno를 설정하지 않습니다.

이미 열려있는 파일을 읽는 데 실패 할 때 가장 가까운 errno 값은 무엇입니까?

+0

왜'fgets()'가 실패합니까? – Barmar

+1

fgets()가 실패하는 일반적인 이유는 EOF에 있기 때문입니다. 그것은 실제로 오류가 아니며 'errno'를 설정할 이유가 없습니다. – Barmar

+0

@Barmar fgets가 실패하지는 않았지만 설명서에 나와 있습니다. 내 프로그램에서 실행되는 다른 모든 경로는 errno를 사용하여 통신하므로 향후 잠재적 인 실패 가능성을 최대한 줄이고 싶습니다. – DeepDeadpool

답변

1

C 표준 자체에서는 errno을 거의 설정하지 않지만 POSIX 또는 POSIX와 유사한 시스템을 사용하는 경우 fgets은 이미 적절한 값으로 errno으로 설정됩니다. fgets의 사양을 참조하십시오 :

그것의 이유 : 그것은 fgetc에 대해 정의 된 이유로 실패 할 수 있음을 지정

이 방법은 C와 POSIX가 모두 복합 stdio는 fgetc 또는 fputc에 대한 반복 호출과 관련하여 기능합니다.

2

구현에 정의 된 경우 EIO을 사용할 수 있습니다. POSIX은 "입력/출력 오류"로 EIO을 정의합니다.

관련 문제