2013-06-30 3 views
1

제 3 자 실행 파일을 동적 플래그 (서버 설정 및 일부 하드웨어 사양에 따라 다르므로 각 컴퓨터마다 다를 수 있음)로 실행 해 달라는 Go를 약간 해킹했습니다.Go에서 제 3 자 바이너리 실행

나는 어떤 경로가 Go 실행 파일에 있는지 찾아 내는데 도움이되는 깔끔한 라이브러리를 사용하고 있습니다. 타사 바이너리는 Go와 같은 폴더에 있습니다. 명령이라는 단일 문자열로 경로와 플래그를 넣어의 FMT의 Sprintf 방법을 실행 I보다

path, err := osext.ExecutableFolder() 
    if err != nil { 
    log.Fatal(err) 
    } 
    path += "3rdparty.exe" 

.

나는 그렇게처럼 호출 할 :

out, err := exec.Command(Command).Output() 
    if err != nil { 
    fmt.Println("Command execution failed:", err) 
    } 

그러나 잘못

이 전무 없습니다. 나는 (단지 컴파일 및 테스트하기 위해이 설정 창) VM웨어에서 오류를 복사 할 수 있지만, 같은 간다 : Command execution failed: "C:\\PATH\\TO\\3rdparty.exe --flags-omitted" file does not exist

을 그러나 내가 cmd를에 C:\\PATH\\TO\\3rdparty.exe --flags-omitted을 복사 할 때 완벽하게 실행됩니다.

아이디어가 있으십니까?

답변

5

명령과 해당 매개 변수는 별도의 문자열이어야하며 이 아니어야합니다.을 단일 문자열에 결합하십시오. 자세히 살펴에서

이 오류 메시지가 실제로 그것에 대해 분명하다 (따옴표가 어디 주) :

Command execution failed: "C:\\PATH\\TO\\3rdparty.exe --flags-omitted" file does not exist 
+0

음을 주셔서 감사합니다. –