> 백엔드 개발 > Golang > Golang의 exec.Command에서 '종료 상태 1' 오류를 디버깅하는 방법은 무엇입니까?

Golang의 exec.Command에서 '종료 상태 1' 오류를 디버깅하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-04 06:40:15
원래의
706명이 탐색했습니다.

How to Debug

Golang의 exec.Command에서 "종료 상태 1" 오류 디버깅

Golang에서 exec.Command를 실행할 때 "종료 상태 1"이 발생함 " 오류는 자세한 정보가 없으면 실망스러울 수 있습니다. 다행히 근본 원인을 찾아낼 수 있는 해결책이 있습니다.

해결책:

Command 개체의 Stderr 속성을 활용하세요. 이 속성은 명령으로 생성된 표준 오류 출력을 캡처합니다. 다음은 코드 조각의 수정된 버전입니다.

import (
    "bytes"
    "fmt"
    "os/exec"
)

func main() {
    cmd := exec.Command("find", "/", "-maxdepth", "1", "-exec", "wc", "-c", "{}", "\")
    var out bytes.Buffer
    var stderr bytes.Buffer
    cmd.Stdout = &out
    cmd.Stderr = &stderr
    err := cmd.Run()
    if err != nil {
        fmt.Println(fmt.Sprint(err) + ": " + stderr.String())
        return
    }
    fmt.Println("Result: " + out.String())
}
로그인 후 복사

설명:

Stderr 속성을 버퍼(stderr)에 할당하면 명령이 캡처되어 버퍼에 추가됩니다. 0이 아닌 종료 코드로 명령이 종료되면 오류 및 stderr 출력이 인쇄되어 디버깅을 위한 추가 컨텍스트를 제공합니다.

참고:

일부 명령은 stderr 대신 stdout으로 오류를 인쇄하거나 stderr의 메시지와 함께 오류 코드 0을 반환합니다. 따라서 이 솔루션을 적용할 때 각 명령의 동작을 고려해야 합니다.

위 내용은 Golang의 exec.Command에서 '종료 상태 1' 오류를 디버깅하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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