링커, 로더, 실행 파일

C 언어의 main 함수가 「return 3;」으로 끝났을 때, 그 값 3은 일반적으로 어떻게 되는가?

  1. A프로그램의 종료 상태로서 프로그램을 시작한 쪽(셸 등)에 전달된다
  2. B화면에 「3」이 표시된다
  3. C다음에 프로그램을 시작할 때의 첫 번째 인수가 된다
정답과 해설 보기

정답: A. 프로그램의 종료 상태로서 프로그램을 시작한 쪽(셸 등)에 전달된다

main의 반환값은 시작 코드에 의해 exit에 전달되고, OS를 통해 부모 프로세스에 종료 상태로 전해집니다. 관례상 0은 성공, 0이 아니면 어떤 실패를 나타내며, 셸에서는 「echo $?」로 직전 명령의 종료 상태를 볼 수 있습니다. 스크립트에서는 이 값을 보고 다음 처리를 계속할지 멈출지 정합니다.

  • A. 올바릅니다. 0은 성공, 0이 아니면 실패를 나타내는 것이 관례입니다.
  • B. 반환값이 자동으로 표시되는 일은 없습니다.
  • C. 다음번 인수가 되지는 않습니다.
이 분야 연습하기 분야로 돌아가기

링커, 로더, 실행 파일의 다른 문제

  1. 실행 파일에 strip 명령을 사용했을 때 일어나는 일로 올바른 것은?
  2. 링커에서 약한 심볼(weak symbol)의 취급으로 올바른 것은?
  3. C++ 컴파일러가 함수 이름에 인수 타입 등의 정보를 덧붙여 심볼 이름을 만드는 「이름 장식(맹글링)」의 주된 목적은?
  4. Linux의 dlopen 함수(Windows의 LoadLibrary에 해당)의 용도로 가장 적절한 것은?
  5. 100개의 프로세스가 같은 공유 라이브러리를 사용하고 있을 때, 물리 메모리 사용 방식으로 올바른 것은?

이 분야의 비교