joseph415   4년 전

혹시 알고리즘 문제푸는곳에 시스템콜에 대해 질문해도 되는지 모르겠지만 물어볼곳이 없어서 여기다 질문해봅니다.

exit()에서 리턴되는 인자로 0이면 정상종료 1이면 에러라고 알고있는데

1말고 다른 값 즉 2, 3.. 또는 -1를 리턴받는경우는 어떤경우인가요?? 구글링해도 원한느 답을 얻지못해 질문합니다.

djm03178   4년 전

0을 제외한 모든 반환값은 비정상 종료입니다. 구체적으로 어떤 문제가 있었는지를 알리기 위한 용도로 사용할 수 있습니다.

luckyquit   4년 전

0만 아니면 다른 모든 값을 넣어도 상관은 없습니다.

그치만 C,C++ 제작자들의 의도를 따라 정해진 상수들 EXIT_FAILURE, EXIT_SUCCESS (스펠링이 맞는지 모르겟네요 맨날 자동완성써가지구)

위의 것들을 사용해주시는 것이 좋습니다.

이렇게 되면 향후 컴파일러가 개편되어서 그럴일은 없겠지만 exit의 함수인자값을 2로 넘겨줘야하는 경우엔 명확하지 못한 코드가 되고, 정상적인(원하는) 결과가 나오지 않을 수도 있습니다. 그러니 조금 귀찮더라도 정해진 상수를 사용하는 것을 권장드립니다. 

이것은 exit외에 다른 정해진 함수 인자들을 사용할 때도 마찬가지입니다! 이번에 TCP/IP 소켓 프로그래밍(윤성우 저) 저자 분이 위의 의견을 써놓으셨더군요.

조금 TMI긴 하지만 도움이 되셨으면 좋겠습니다!

댓글을 작성하려면 로그인해야 합니다.