종료 상태

Exit status

컴퓨터 프로그래밍에서 프로세스종료 상태는 특정 프로시저 또는 위임된 태스크 실행이 완료되면 하위 프로세스(또는 착신자)에서 상위 프로세스(또는 호출자)로 전달되는 작은 숫자입니다.DOS 에서는, 이것을 에러 레벨이라고 부릅니다.

컴퓨터 프로그램이 실행될 때 운영체제는 그 프로그램의 부기가 유지되는 프로세스라고 불리는 추상적인 실체를 만듭니다.Unix 또는 Linux와 같은 멀티태스킹 운영 체제에서는 활성 프로세스를 통해 새 프로세스를 생성할 수 있습니다.다른 프로세스를 생성하는 프로세스를 부모 프로세스라고 하며 생성된 프로세스를 자식 프로세스라고 합니다.하위 프로세스는 상위 프로세스와 동시에 실행됩니다.자식 프로세스를 산란하는 기술은 부모의 실행을 중지할 이유가 없는 경우 자식 프로세스에 일부 작업을 위임하는 데 사용됩니다.자녀는 실행이 완료되면 종료 시스템콜을 호출하여 종료합니다.이 시스템 콜을 사용하면 종료 상태 코드를 부모에게 쉽게 전달할 수 있습니다.부모는 대기 시스템콜을 사용하여 이 값을 취득할 수 있습니다.

의미론

부모와 자녀는 종료 상태의 의미를 이해할 수 있습니다.예를 들어, 하위 프로세스가 성공을 나타내는 0을 부모에게 반환(종료)하는 것은 일반적인 프로그래밍 관행입니다.자녀로부터의 이 반환값과는 별도로 프로세스가 정상적으로 또는 신호에 의해 어떻게 종료되었는지와 같은 다른 정보도 부모 프로세스에서 사용할 수 있습니다.

반환되는 특정 코드 세트는 해당 코드를 설정하는 프로그램에 따라 고유합니다.일반적으로 성공 또는 실패를 나타냅니다.함수 또는 프로그램에서 반환되는 코드 값은 특정 장애 원인을 나타낼 수 있습니다.많은 시스템에서 값이 높을수록 [1]오류의 원인이 심각해집니다.또는 각 비트는 다른 조건을 나타낼 수 있습니다.이러한 조건을 또는 연산자가 함께 평가하여 최종값을 제시합니다.를 들어 fsck는 이를 실시합니다.

경우에 따라서는, 코드가 이러한 목적을 염두에 두고 설계되어 있는 경우는, 개시 프로그램에 복귀했을 때에 분기 인덱스로서 직접 사용해, 추가의 테스트를 회피할 수 있습니다.

아미가OS

AmigaOS, MorphOSAROS에서는 4가지 레벨이 정의되어 있습니다.

  • OK 0
  • 경고 5
  • 에러 10
  • 실패 20

셸 및 스크립트

스크립트는 일반적으로 명령을 실행하고 종료 상태를 캡처합니다.

셸에서는 종료 상태가 0인 상태에서 종료되는 명령이 성공했습니다.0이 아닌 종료 상태는 장애를 나타냅니다.겉으로 보기에 반직관적인 이 방식을 사용하기 때문에 성공을 나타내는 명확한 방법 하나와 다양한 실패 모드를 나타내는 다양한 방법이 있습니다.번호가 N인 신호에 의해 명령어가 종료되면 셸은 변수 $?를 128보다 큰 값으로 설정합니다.대부분의 셸은 128+N을 사용하는 반면 ksh93은 256+N을 사용합니다.

명령어를 찾을 수 없는 경우 셸은 상태 127을 반환합니다.명령어가 발견되었지만 실행할 수 없는 경우 반환 상태는 [2]126이어야 합니다.이는 모든 셸의 경우는 아닙니다.

확장 또는 리다이렉션 중 오류로 인해 명령이 실패하면 종료 상태가 0보다 커집니다.

C언어

C 프로그래밍 언어를 사용하면 메인 기능을 종료하거나 메인 기능에서 복귀하는 프로그램이 정수를 반환하거나 매크로를 반환하여 성공 또는 실패를 알릴 수 있습니다. EXIT_SUCCESS그리고.EXIT_FAILUREUnix 계열 시스템에서는 각각 [3]0과 1이 됩니다.C 프로그램에서는 다음 명령을 사용할 수 있습니다.exit()정수 상태를 지정하거나 매크로를 종료하는 함수를 첫 번째 매개 변수로 지정합니다.

반환값:main에 전달됩니다.exit이 함수는 값이 0일 경우EXIT_SUCCESS또는EXIT_FAILURE종료가 성공하거나 종료가 실패하는 '실장 정의 형식'으로 변환될 수 있습니다.

제로와 매크로를 제외하고EXIT_SUCCESS그리고.EXIT_FAILUREC 표준에서는 리턴 코드의 의미는 정의되어 있지 않습니다.리턴 코드 사용 규칙은 플랫폼에 따라 다릅니다(플랫폼 고유 섹션 참조).

DOS

DOS 용어에서 오류 레벨은 실행 가능한 프로그램 또는 서브루틴에 의해 반환되는 정수 종료 코드입니다.일반적으로 오류 레벨의 범위는 0 ~255입니다.[4][5][6][7]DOS 에서는 256개의 에러 코드 밖에 사용할 수 없지만, DR DOS 6.0 이후에서는 적어도 CONFIG 에서는 16비트 에러 코드를 서포트하고 있습니다.SYS.[6] 4DOS 및 DR-DOS 명령어를 사용합니다.COM, 종료 코드(배치 작업 내)는 EX에서 설정할 수 있습니다.IT[6] 및 (CONFIG에서)SYS) ~ ERROR=n.[6]

종료 상태는 IF ERRORLEVEL [4][6]명령을 통해 배치 프로그램에 의해 캡처되는 경우가 많습니다.멀티 유저 DOS 에서는, 애플리케이션으로부터의 반환시에 자동적으로 갱신되는, 예약된 환경 변수 %ERRORLV% 가 서포트되고 있습니다.명령어DR-DOS 7.02 이후 COM에서는 유사의사 환경 변수 %ERRORLVL%와 %ERRORLEVEL%가 지원됩니다.CONFIG in 。SYS, DR DOS 6.0 이상에서는 ONERROR을 지원하여 디바이스 드라이버의 로드 상태 및 반환 코드와 [6]프로그램의 종료 코드를 테스트합니다.

자바

자바에서는 어떤 메서드에서도System.exit(int status)단, 보안 매니저가 허가하지 않는 한.현재 실행 중인 Java Virtual Machine이 종료됩니다.인수는 상태 코드 역할을 합니다.규칙상 0이 아닌 상태 코드는 비정상적인 [8]종료를 나타냅니다.

오픈VMS

OpenVMS에서는 성공은 홀수값으로, 실패는 짝수값으로 표시됩니다.값은 32비트 정수이며 서브필드(컨트롤 비트, 퍼실리티 번호, 메시지 번호 및 중대도)입니다.중대도 값은 성공(Success, Informational)과 실패(Warning, Error, Fatal)[9]로 나뉩니다.

POSIX

Unix 및 기타 POSIX 호환 시스템에서 부모 프로세스는 다음 명령을 사용하여 자식 프로세스의 종료 상태를 가져올 수 있습니다.wait()wait.[10]h에서 정의된 시스템콜 패밀리이 중에서waitid() [11] 콜은 완전한 32비트 종료 상태를 취득하지만 오래된 것은wait()그리고.waitpid() [12] 콜은 종료 상태의 최하위8비트만 가져옵니다.

wait()그리고.waitpid()인터페이스는 type의 상태 값을 설정합니다.int다양한 유형의 자식 종단 정보가 포함된 비트 필드로 팩됩니다.종료에 의해 자녀가 종료된 경우(에 의해 결정됨)WIFEXITED()매크로(일반적인 대안은 수집되지 않은 신호로 인해 사망) SUS는 종료 상태의 하위8비트를 상태 값에서 취득할 수 있도록 지정합니다.WEXITSTATUS()매크로를 사용합니다.

에서waitid()시스템 콜(SUSv1에 추가), 자 종료 상태 및 기타 정보는 비트필드가 아닌 유형 구조로 되어 있습니다.siginfo_t를 클릭합니다.[13]

POSIX 호환 시스템에서는 일반적으로 성공에는 0, [14]오류에는 0이 아닌 규칙을 사용합니다.다양한 에러 코드의 상대적인 의미에 관한 규약이 개발되고 있습니다.예를 들어 GNU는 높은 비트가 설정된 코드를 심각한 [3]에러용으로 예약하도록 권장하고 있습니다.

BSD에서 파생된 OS에서는 다음과 같은 광범위한 선호 해석이 정의되어 있습니다.15개의 상태 코드 64~78의 의미는 sysexits.[15]h에 정의되어 있습니다.이들은 이전에는 Sendmail 및 기타 메시지 전송 에이전트에서 파생되었지만, 그 이후 많은 [16]다른 프로그램에서 사용되고 있습니다.

이식성을 위해 glibc는 매크로 EX를 정의합니다.IT_SUCCESS 및 EXIT_FAILURE(실패).Advanced Bash-Scripting Guide 와 /usr/include/sysexits.h 에는 0 이외의 종료 상태 [17]코드의 의미에 대한 정보가 기재되어 있습니다.

창문들

Windows 에서는 32비트 부호 없는 정수를 종료 [18][19]코드로 사용합니다.단, 명령어인터프리터는 정수를 서명된 것으로 [20]취급합니다.

종료 코드는 예를 들어 의 명령줄 인터프리터 CMD.exe에 의해 직접 참조됩니다.errorlevel용어가 DOS 에서 상속되었습니다.NET Framework 프로세스 및 Windows PowerShell에서는 이를ExitCode의 특성Process물건.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "Errorlevels". Rob van der Woude's Scripting Pages. Retrieved 2007-08-26.
  2. ^ "Shell command language - Exit Status for commands". The Open Group. Retrieved 2015-07-07.
  3. ^ a b "The GNU C Library Reference Manual 25.6.2: Exit Status". Gnu.org. Retrieved 2012-07-09.
  4. ^ a b Paul, Matthias R. (1997-05-01) [1993-10-01]. BATTIPs — Tips & Tricks zur Programmierung von Batchjobs. MPDOSTIP (in German). 7: ERRORLEVEL abfragen. Archived from the original on 2017-08-23. Retrieved 2017-08-23. [1] [2] (NB.BATIPS)TXT는 MPDOSTIP의 일부입니다.ZIP. 제공된 링크는 HTML 변환된 이전 버전의 BATTIPS를 가리키고 있습니다.TXT 파일).[3]
  5. ^ Auer, Eric; Paul, Matthias R.; Hall, Jim (2015-12-24) [2003-12-31]. "MS-DOS errorlevels". Archived from the original on 2015-12-24.
  6. ^ a b c d e f Paul, Matthias R. (1997-07-30) [1994-05-01]. NWDOS-TIPs — Tips & Tricks rund um Novell DOS 7, mit Blick auf undokumentierte Details, Bugs und Workarounds. MPDOSTIP. Release 157 (in German) (3 ed.). Archived from the original on 2016-11-04. Retrieved 2014-08-06. (NB. NWDOSTIP).TXT는 Novell DOS 7 및 OpenDOS 7.01관한 포괄적인 작업이며, 문서화되어 있지 않은 많은 기능 및 내부 기능에 대한 설명을 포함합니다.제공된 링크는 파일의 HTML 변환 버전을 가리키며, 이는MPDOSTIP.ZIP를 참조해 주세요.[4]
  7. ^ Allen, William; Allen, Linda. "Windows 95/98/ME ERRORLEVELs". Archived from the original on 2011-07-07.
  8. ^ "Java 1.6.0 API". Sun Microsystems. Retrieved 2008-05-06.
  9. ^ "OpenVMS Format of Return Status Values". H71000.www7.hp.com. Archived from the original on 2012-03-19. Retrieved 2012-07-09.
  10. ^ sys_wait.h기본 정의 레퍼런스, 오픈 그룹의 단일 UNIX 사양, 버전 4
  11. ^ waitid – System Interfaces Reference, 단일 UNIX 사양, The Open Group 버전 4
  12. ^ wait – System Interfaces Reference, 단일 UNIX 사양, The Open Group 버전 4
  13. ^ "2.4.3 Signal Actions". The Open Group. Retrieved 2019-02-08.
  14. ^ "Chapter 6. Exit and Exit Status". Faqs.org. Retrieved 2012-07-09.
  15. ^ sysexits(3): 프로그램의 바람직한 종료 코드– FreeBSD 라이브러리 기능 매뉴얼
  16. ^ 구글은 사이섹을 검색한다.h" site:github.com"에서 "About 3,540 results"가 보고되고 2013-02-21이 취득되었습니다.
  17. ^ "Exit Codes with Special Meanings".
  18. ^ "ExitProcess function". Retrieved 2016-12-16.
  19. ^ "GetExitCodeProcess function". Retrieved 2022-04-22.
  20. ^ "ExitCodes bigger than 255, possible?". Retrieved 2009-09-28.