나는이 코드 조각이 여러 번 사용되었다는 것을 발견했습니다. write()
대신에 open()
이 사용 된 유사한 코드도 있습니다. 이 여기 && errno != EINTR
경우 체크 왜만약 errno! = EINTR : 그것이 무엇을 의미합니까?
int c = write(fd, &v, sizeof(v));
if (c == -1 && errno != EINTR) {
perror("Write to output file");
exit(EXIT_FAILURE);
}
? 사람에 errno
을 찾고
나는 EINTR
에 대해 다음 텍스트를 찾았지만, 내가 가르치 려하지 않습니다 man 7 signal
를 방문한 경우에도 마찬가지입니다.
EINTR 중단 된 함수 호출 (POSIX.1); 신호 (7) 참조. 에서
대신 '쓰기'에 대한 매뉴얼 페이지를 확인하십시오. 그것은 특정 오류에서 errno가 설정되는 것을 알려 주어야합니다. – Kevin
'write()'는'ssize_t'를 리턴하고 **는'int'를 리턴하지 않는다는 점에 유의하십시오. 그들은 동일하지 않습니다. –
둘 다 감사합니다! @AndrewHenle 내가 아는 한 코드 조각을 복사하기로 결정했다. 나는'int' 대신'ssize_t'를 사용하여 질문을 모두 편집해야한다고 생각합니까? – Robb1