콘텐츠

C 밖에서 이식성 있게 errno에 접근하는 괴상하고 엉망인 꼼수

역량 개발 · GeekNews · 2026.10.24

C 언어의 errno는 매크로 형태라 다른 언어에서 직접 접근하기가 까다로운데요. 이번 글에서는 Hare라는 언어를 사용해, C 래퍼 함수 없이도 errno 값을 얻어내는 독특한 실험 과정을 소개하고 있습니다. 핵심은 perror가 출력하는 오류 메시지를 가로채는 것입니다. 프로그램 초기화 단계에서 stderr를 임시 파일로 리다이렉션한 뒤, perror(null)을 호출해 메시지를 기록하고, 이를 다시 숫자 형태의 errno로 역변환하는 방식이죠. 이 과정에서 strerror_r의 구현 차이나 SEEK_SET 값의 불확실성 같은 기술적 난관을 어떻게 우회하며 해결했는지 상세히 다루고 있습니다. 시스템 프로그래밍의 깊은 부분을 이해하는 데 도움이 될 만한 흥미로운 사례입니다.