애플리케이션의 종료 코드를 어떻게 조회합니까?

애플리케이션의 종료 코드를 어떻게 조회합니까?

Bash에서 포괄적인 최신 오류 코드 목록을 찾는 데 어려움을 겪고 있습니다. 예:

$ udevadm info /dev/sdx; echo Exit code $?
Unknown device, --name=, --path=, or absolute path in /dev/ or /sys expected.
Exit code 4

그러한 종료 ​​코드를 어떻게 조회해야 합니까?

답변1

다음과 같은 몇 가지 종료 코드가 있습니다.예약된 특별한 의미:

종료 코드 번호 의미
1 일반적인 오류에 대한 캐치홀
2 쉘 내장 기능의 오용(Bash 문서에 따름)
126 호출된 명령을 실행할 수 없습니다.
127 "명령을 찾을 수 없습니다"
128+n 치명적인 오류 신호 "n"
130 Ctrl-C에 의해 스크립트가 종료되었습니다.
255* 종료 상태가 범위를 벗어났습니다.

125 미만의 모든 것은 개발자에게 공정한 게임이며 실제로는 다음과 같이 예측할 수 있습니다.그의 답변에 l0b0 메모가 있습니다., 애플리케이션 페이지나 소스 코드를 읽어 man코드가 무엇을 의미하는지 확인합니다(실제로 코드가 문서화되어 있는 경우).

답변2

tl;dr종료 코드는 응용 프로그램마다 다릅니다.

몇 가지 느슨한 규칙이 있습니다. POSIX 셸에서 (예: ) 접두사 false가 붙은 모든 항목은 종료 코드 1을 반환하지만 개발자는 원하는 대로 0에서 255 사이의 종료 코드를 사용할 수 있습니다. 궁극적으로 그것이 무엇을 의미하는지 알기 위해서는 문서(최상의 경우)나 코드(최악의 경우)를 살펴봐야 합니다. 페이지 종료 코드가 있는 프로그램의 경우 종종 이름이 지정된 섹션에 나열됩니다 ( 와 같은 GNU 도구 ).!! truemanEXIT STATUSfind

몇 가지 대중적인 의미가 다음에 나열되어 있습니다 /usr/include/sysexits.h. 나는 가능할 때마다 그 의미를 사용하려고 노력합니다. 처럼@AnsgarEsztermann이 지적했습니다., 이는 Bash 참조가 아니며 이를 사용하기로 선택한 사용자(주로 C/C++ 개발자)를 제외하고는 애플리케이션 참조도 아닙니다.ABS에 따르면).

관련 정보