C & C++/C

[C] 일반적인 에러 상황에서 어떤 값을 리턴하는 게 좋을까?

Razelo 2026. 1. 11. 11:57

최근에 C 코드를 좀 짜고 있는데, 에러 상황에서 return을 해야할때 습관적으로 return -1을 해주고 있었다. 
 
그런데 오늘 알게 된건 return -1은 올바르지 않고 return 1이 올바른 관습이라고 한다. 
통상 int main에서 성공인 경우 return 0을 하는데, 늘 시스템 콜 중에서 실패인 경우 -1을 주는 경우가 있어서 나도 모르게 int main에서도 return -1을 해버렸다. 그런데 이 경우 쉘이 받아들일때 0~255 내 return value를 받아서 해석하는데 -1을 받아버리니 이게 255가 되어버리고 잘못된 케이스로 인해 프로세스가 종료되었다고 오해석되는 것이다. 
 
그래서 return 1이 맞다고 한다. 
쉘은 non-zero를 받을때 에러 케이스에 의해 Fail된거구나로 이해하는데, 그러면 -1을 주면 255를 받는거니 문제없는거 아닌가? 일 수도 있는데 여기선 그냥 오해석되는게 문제다. 내가 의도한게 -1을 준건데 255로 해석되는 것 자체가 문제라는 거다.