표준 리턴 코드 세트와 같은 것이 있습니까? 성공을 위해 0을 반환하고 실패를 한 다음 등등의 일이 발생합니까?응용 프로그램에서 지원해야하는 "표준"응용 프로그램 반환/종료 코드는 무엇입니까?
Windows Server 응용 프로그램에서 일부 반환 오류 코드를 추가하고 필요한 특정 응용 프로그램 외에도 표준 코드를 고수하고 싶습니다.
표준 리턴 코드 세트와 같은 것이 있습니까? 성공을 위해 0을 반환하고 실패를 한 다음 등등의 일이 발생합니까?응용 프로그램에서 지원해야하는 "표준"응용 프로그램 반환/종료 코드는 무엇입니까?
Windows Server 응용 프로그램에서 일부 반환 오류 코드를 추가하고 필요한 특정 응용 프로그램 외에도 표준 코드를 고수하고 싶습니다.
응용 프로그램이 준수해야하는 표준 종료 코드 세트는 없습니다.
그러나 언급 한 성공을 위해 0과 같은 몇 가지 공통점이 있습니다. 운영 체제 및 사용하는 도구에 따라 유사한 앱의 종료 코드를보고이를 모방 할 수 있습니다.
나는 성공의 경우 0, 실패의 경우 0이 유일한 표준이라고 생각합니다. 표준보다 관습이 더 중요합니다.
종료 코드는 표준과는 거리가 멀며, 개발자가 응용 프로그램을 반환 할 때 발생하는 적절한 오류를 알기 위해 더 많이 사용됩니다. 성공에 대한 0, 실패에 대한 0이 아닌 표준은 일반적인 추세이며 모든 가능한 오류에 대해 0이 아닌 범위를 사용할 수 있도록하기 위해 사용됩니다.
응용 프로그램에서 오류를 적절하게 기록하는 경우 종료 코드는 추적 할 필요가 없을 것입니다.
표준 상태 코드는 EXIT_SUCCESS
및 EXIT_FAILURE
이며, stdlib.h
에 정의되어 있습니다. 꽤 많은 사람들이 각각 0과 1을 사용합니다. 일부 소프트웨어는 서로 다른 유형의 오류에 대해 서로 다른 0이 아닌 코드를 사용합니다.
사용할 항목을 구현하십시오. 다른 것은 불필요합니다.
유닉스 협약 중 일부를 채택 할 수도 있습니다.
는 another answer에서 사용자 다윗은을 제안했다. 최소한 1993 년으로 거슬러 올라가며 Postfix와 같은 몇몇 큰 프로젝트는 그것을 사용합니다. 그래서 나는 그것이 갈 길이라고 상상합니다. 오픈 BSD 사람 페이지에서 :
sysexits.h
표준 출력 코드의 목록이스타일에 따라 (9), 그것은 프로그램을 종료 할 때 (3) : 임의 정반대의 값으로 실패 조건을 나타내도록 출구를 호출하는 것이 좋습니다되지 않습니다. 대신 sysexits의 사전 정의 된 종료 코드를 사용해야하므로 프로세스 호출자는 소스 코드를 보지 않고 오류 클래스에 대한 대략적인 평가를 얻을 수 있습니다. 파일
/usr/include/sysexits.h
한 내부#define EX_USAGE 64 /* command line usage error */ #define EX_DATAERR 65 /* data format error */ #define EX_NOINPUT 66 /* cannot open input */ #define EX_NOUSER 67 /* addressee unknown */ #define EX_NOHOST 68 /* host name unknown */ #define EX_UNAVAILABLE 69 /* service unavailable */ #define EX_SOFTWARE 70 /* internal software error */ #define EX_OSERR 71 /* system error (e.g., can't fork) */ #define EX_OSFILE 72 /* critical OS file missing */ #define EX_CANTCREAT 73 /* can't create (user) output file */ #define EX_IOERR 74 /* input/output error */ #define EX_TEMPFAIL 75 /* temp failure; user is invited to retry */ #define EX_PROTOCOL 76 /* remote error in protocol */ #define EX_NOPERM 77 /* permission denied */ #define EX_CONFIG 78 /* configuration error */
이러한 오류 코드의 자세한 설명을 볼 수 있습니다 : 그것은 데비안 시스템에 표시되는
이
은 목록입니다.이것은 내가 사용하는 것입니다. – RedShift
Windows 용으로 정의 된 표준 오류 코드가 있습니다.
오래전에 우리는 특정 '사용자 정의'오류에 대해 부정적인 오류를 사용 했었지만 좋은 사례라고 생각합니다.
* 프로그램 종료 코드로 * 시스템 오류 코드 *를 사용할 필요가 없습니다. 다른 답변에서 언급했듯이, Windows 프로그램은 * 1 *을 catch-all 오류 코드로 사용하는 것이 일반적입니다. 모든 사람들이 * 시스템 오류 코드 *를 사용하고 있다면, 그것은 항상 "잘못된 기능"을 의미합니다 (그리고 일반적인 불특정 오류를 나타내는 방법이 전혀 없을 것입니다). –
사실, 당신은 표준을 따를 필요가 없습니다. 질문은 표준에 관한 것이 었으며 이것이 제가 제공 한 것입니다. 기본 케이스가 0이면 성공을 나타내고 0이 아니면 실패를 나타냅니다. 발신자가 특정 오류를 처리 할 수없는 경우 오류가 무엇이 었는지 상관하지 않지만 발신자가 오류를 처리 할 것으로 예상되는 경우 의미있는 오류를주는 것이 좋습니다. 그러한 경우에 표준은 구조를 부여하는 데 도움이됩니다. – Pyro
* "표준을 준수 할 필요가 없습니다"* - 이것은 비 연속입니다. 응용 프로그램 종료 코드로 시스템 오류 코드를 사용하면 "표준 준수"에 아무런 영향을 미치지 않습니다. * "호출자가 실패를 처리 할 것으로 기대하는 경우 의미있는 오류를주는 것이 좋습니다"* - 동의하지만, 수천 개가 있으므로 시스템 오류 코드를 사용하면 제대로 수행되지 않습니다 (따라서 호출자는 고려할 수 없습니다.) 모두) 응용 프로그램 별 오류를 의미있는 방식으로 설명하기에는 너무 일반적 일 수 있습니다. –
유일한 규칙 0
성공 및 비 - 제로 값 (일반적 1
) 실패를 의미하는 의미이다. 이에 대한 공식 참고로, exit
에 예를 들어, 마이크로 소프트의 C++ 문서를 참조하십시오
일반적으로, 호출자는 정상적인 종료를 나타 내기 위해 0으로
status
값을 설정하거나 다른 값에 오류를 나타냅니다.
또는 각종 상태 Envrionment.Exit
및 Environment.ExitCode
의 C#의 문서 :
사용 0 (영) 프로세스가 성공적으로 완료되었음을 나타냅니다.
및
기본값 프로세스가 성공적으로 완료되었음을 나타내는 0 (제로)이다.
및
오류를 표시하는 영이 아닌 번호를 사용합니다. 응용 프로그램에서 열거 형에서 고유 한 오류 코드를 정의하고 해당 시나리오를 기반으로 적절한 오류 코드를 반환 할 수 있습니다. 예를 들어, 필수 파일이 존재하지 않음을 나타내는 값 1을 리턴하고 파일이 잘못된 형식임을 나타 내기 위해 값 2를 리턴하십시오. Windows 운영 체제에서 사용되는 종료 코드 목록은 Windows 설명서의 System Error Codes을 참조하십시오.
는 some other answerers는 달리, 난 강력하게 응용 프로그램 종료 코드로 시스템 오류 코드를 사용에 대해 조언한다. 시스템 오류 코드에 대한 몇 가지주의 사항 :
dir
, dotnet
또는 TAEF과 같이 많지는 않습니다.
링크가 깨져서 Google 캐시에 없습니다. HP 포럼의 게시물은 특히 권위있는 참조 일 가능성이 거의 없습니다. –