Linux errno(3)의 이상한 제한

2025-07-04

Linux의 errno(3) 매뉴얼 페이지는 이상한 제한을 보여줍니다. 함수 호출이 성공하더라도 errno가 변경될 수 있으며, 시스템 콜이나 라이브러리 함수가 errno를 0으로 설정하는 경우는 없습니다. 이는 Unix의 전통적인 설계 때문입니다. 시스템 콜은 일반적으로 실패할 때만 errno를 반환하고, 성공했을 때는 errno를 변경하지 않습니다. C 라이브러리 함수는 여러 시스템 콜을 수행할 수 있으며, 일부가 실패하더라도 라이브러리 함수 자체의 성공에는 영향을 미치지 않으므로 errno는 실패 값으로 남아 있을 수 있습니다. ANSI C와 POSIX는 이 동작을 상속했으며, 함수가 실패하고 해당 문서에서 errno 설정을 지정한 경우에만 errno가 의미를 갖도록 요구합니다.

개발