개발/오류조치 및 팁

[C언어] main 함수는 도대체 return을 왜 하는 걸까?

안녕진 2022. 3. 31. 12:51

main의 리턴

main의 return값은 exit status를 나타낸다고 한다.

그런데 종료 상태면 잘 종료 되었는지 어딘가 사용한다는 건데, 어떻게 사용한다는 걸까?

생각

main함수의 return은 프로그램의 부모 프로세스로 반환된다는데,
터미널에서 프로그램을 실행하면 부모 프로세스가 터미널인 셈이니까,
터미널에서 main의 return 값을 받을 수 있을까?

과정

main의 return값인지 확인하기 위해,
기본적으로 반환하는 0 대신에 56이라는 숫자를 반환하는 프로그램을 작성했다.

이를 컴파일 및 실행하고, $? 라는 변수를 이용해 main의 반환값을 출력할 수 있다.

c언어 실행파일의 return value를 받는 부분

$?가 뭐길래 main의 반환값이 나오는 건지 궁금해서 이것 저것 해보니, 터미널에서 실행한 가장 마지막 명령의 exit status를 저장하는 것 같다는 생각이 들었다.

기본 명령에서도 종료 코드를 받아서 출력할 수 있다.

$?가 뭐지

Exit Status($?) variable in Linux - GeeksforGeeks

마지막 실행한 명령의 return value를 갖고 있는 변수라고 한다.

shell script를 작성하거나 할 때,
이 변수를 이용해서 명령이 잘 실행되었는지 확인할 수도 있을 것 같다.