시스템 호출 실패 모드에 대한 표나 목록이 있는지 알고 싶습니다. 몇 가지 예: 시스템 메모리 부족으로 인해 종료()가 실패합니까? 시스템이 최대 열린 파일 수에 도달했기 때문에 open()이 실패합니까? 시스템 호출이 단순히 시간 초과되나요? 시스템 호출 오류에서 다양한 하드웨어 오류는 어떻게 보일까요?
감사해요!
답변1
짐작할 수 있듯이 모든 시스템 호출에서 모든 오류가 발생하는 것은 아닙니다.
처음부터 시작하는 경우 /usr/include/errno.h
"EPERM" 또는 "EINTR"과 같은 매니페스트 상수를 추적할 수 있습니다. 다음에서 찾았습니다.
/usr/include/asm-generic/errno-base.h
그리고
/usr/include/asm-generic/errno.h
하지만 제가 보기엔 libc의 배포판이나 버전에 약간의 변화가 있을 수도 있을 것 같습니다.
Linux는 특정 시스템 호출이 해당 시스템 호출의 매뉴얼 페이지에 표시할 수 있는 오류를 처리하는 데 매우 능숙한 것 같습니다 man 2 read
. man 2 socket
이는 전통적으로 아직 존재할 수 있는 다양한 Unix 버전의 경우에는 해당되지 않습니다. 나는 최신 Unix 상황을 확인하기 위해 *BSD 시스템에 접근할 수 없습니다.