> 백엔드 개발 > Golang > Go의 os/exec 패키지에서 종료 코드를 안정적으로 검색하려면 어떻게 해야 합니까?

Go의 os/exec 패키지에서 종료 코드를 안정적으로 검색하려면 어떻게 해야 합니까?

Barbara Streisand
풀어 주다: 2024-12-31 01:37:08
원래의
818명이 탐색했습니다.

How Can I Reliably Retrieve Exit Codes from Go's os/exec Package?

Go의 os/exec 패키지에서 종료 코드 확인

Go에서 os/exec 패키지는 시스템 명령을 실행하기 위한 편리한 메커니즘을 제공합니다. 그러나 실행된 명령의 종료 코드를 얻는 것은 약간 까다로울 수 있습니다.

문제

Command.Run() 및 Command.Output() 메서드는 이를 수행합니다. 종료 코드에 대한 직접 액세스를 제공하지 않습니다. Command.Wait()는 0이 아닌 종료 코드에 대해 오류를 반환하지만 이 오류에는 특정 종료 코드 값이 포함되지 않습니다.

교차 플랫폼 솔루션

안타깝게도 종료 코드를 검색하기 위한 플랫폼 독립적인 API는 없습니다. 그러나 Linux 시스템의 경우 다음 접근 방식을 사용할 수 있습니다.

import (
    "syscall"
)

...

// Attempt to execute the command
if err := cmd.Start(); err != nil {
    log.Fatalf("cmd.Start: %v", err)
}

// Wait for the command to complete
if err := cmd.Wait(); err != nil {
    if exitErr, ok := err.(*exec.ExitError); ok {
        // Convert exit status to an integer
        exitStatus := exitErr.ExitCode()
        log.Printf("Exit Status: %d", exitStatus)
    } else {
        log.Fatalf("cmd.Wait: %v", err)
    }
}
로그인 후 복사

이 솔루션에서는 os/exec 패키지에서 사용할 수 있는 비표준 ExitError 구조를 사용합니다. 존재 여부를 확인하면 ExitCode() 메서드에 액세스하여 종료 코드를 검색할 수 있습니다.

제한 사항

이 접근 방식은 Linux에만 해당되며 다음과 같은 경우가 있을 수 있습니다. 다른 플랫폼에서는 작동하지 않습니다. 대체 방법은 os/exec 패키지 설명서를 참조하거나 플랫폼별 리소스를 참조하세요.

위 내용은 Go의 os/exec 패키지에서 종료 코드를 안정적으로 검색하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿