Golang의 exec.Command에서 "Exit Status 1" 오류의 원인을 찾는 방법
Golang에서 exec.Command 메소드를 실행할 때 , "종료 상태 1" 오류를 수신하는 것은 실망스러울 정도로 모호할 수 있습니다. 특정 정보가 없으면 효과적인 디버깅이 방해됩니다.
더 자세한 정보를 검색하려면 Command 개체의 Stderr 속성을 활용하세요. 이는 다음을 통해 달성됩니다:
var out bytes.Buffer var stderr bytes.Buffer cmd.Stdout = &out cmd.Stderr = &stderr err := cmd.Run()
오류를 stderr 버퍼로 리디렉션하면 명령 실패 시 해당 오류에 액세스할 수 있습니다.
if err != nil { fmt.Println(fmt.Sprint(err) ": " stderr.String()) return }
어떤 경우에는 출력이 stdout과 stderr 모두에 표시됩니다. 아래 예와 같이 명령이 0이 아닌 오류 코드를 반환하는 경우:
cmd := exec.Command("find", "/", "-maxdepth", "1", "-exec", "wc", "-c", "{}", "\\")
오류 메시지는 다음과 같습니다.
exit status 1: find: -exec: no terminating ";" or " "
stderr은 일반적으로 오류를 나타내지만 일부 명령은 오류 코드를 반환하지 않고 stdout 또는 stderr의 오류를 인쇄한다는 점에 유의하는 것이 중요합니다. 따라서 특정 명령을 수용하도록 코드를 조정해야 할 수도 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3