2012-09-20 6 views
1

exit() 함수가 반환 한 프로그램 종료 상태가 필요한 상황이 발생했습니다.프로그램 종료 상태

(LINUX의 경우) $? 명령을 사용하면 상태가 나타납니다. 창문에서도 작동 할 수있는이 상태를 얻는 다른 방법이 있습니까?

내가 알아챈 또 다른 사실은 우리가 exit() 함수에 음수를 전달하면 내 IDE가 충돌하고이 경우에도 $? 명령이 상태를 제공 할 수 없다는 것입니다. 나는 exit() 함수를 참조하여 함수의 참조가 정수를 전달할 수 있다고 말합니다.

+0

에 관련 http://stackoverflow.com/questions/334879/how-do-i-get-the-application-exit-code-from-a-windows-command-line –

+5

참고 것을 참조 일반적으로 이식 가능한 유일한 반환 값은 'EXIT_SUCCESS'와'EXIT_FAILURE'는''과''에 정의되어 있습니다. –

+3

@PeteBecker, 0 또한 휴대용 IIRC입니다. – AProgrammer

답변

2

프로그램 반환 값은 다른 운영 체제에서 다른 것을 의미합니다. Unix-y 시스템에서는 0-255 값만 유효합니다 (부호없는 1 바이트). 음수 값은 허용되지 않으며 IDE 문제의 원인 일 수 있습니다. FreeBSD는 sysexits.h에 특정 의미의로드를 도입했습니다. 사용하고있는 Linux 배포판에 확실히 존재하지만 일반적으로 유일하게 받아 들여지는 유일한 라이브러리는 성공을 위해서는 0이고 실패하면 0입니다. Pete Becker이 지적한대로 EXIT_SUCCESSEXIT_FAILURE은 표준 정의 된 매크로입니다 (Unix-y 플랫폼에서는 각각 0 및,이지만 구현이 정의되어 있음).

윈도우에서 32 비트 부호있는 정수를 얻을 수 있습니다 (음수는 허용되며 아무 의미가 없는지는 알 수 없음). 다시 0이 성공하고 다른 값은 various things을 의미합니다. echo $?처럼 echo %errorlevel%을 사용하면 콘솔에서 마지막 프로그램의 종료 코드를 볼 수 있습니다. 컨트롤이 return 문을 발생하지 않고 main의 끝에 도달하면

, 효과는 실행의이다 :

또한 내 N3337 (C++ 11 표준 초안 매우 가까운) section 3.6.1 paragraph 5에서 말한다 있습니다 return 0;