2017-11-10 6 views
0

GO를 사용하여 Windows 10에서 비동기 명령을 실행하고 싶습니다. 실행중인 명령이 차단되어 있으며 터미널에서 직접 실행하면 ctrl-c가 될 때까지 일정한 상태 메시지를 제공합니다async 명령에서 stdout 스트림으로 이동

GO를 통해 exec에서 명령을 실행하고 exec 명령의 출력을 실시간으로 터미널에 보내려고합니다. 즉, GO 응용 프로그램이 종료 될 때뿐만 아니라 실시간으로 터미널에 명령을 보내려고합니다.

수많은 예제를 시도했지만 성공하지 못했습니다. 빈 터미널이 생기고 GO 응용 프로그램을 종료 한 후에도 실행 된 명령의 출력이 표시되지 않습니다.

답변

1

당신은 그렇게 cmd.StdoutPipe를 사용할 수는 :

감사합니다, 나는 운없이 이미 시도했다
cmd := exec.Command(cmdName, cmdArgs...) 
cmdReader, _ := cmd.StdoutPipe() 
scanner := bufio.NewScanner(cmdReader) 
go func() { 
    for scanner.Scan() { 
     fmt.Printf(scanner.Text()) 
    } 
}() 
cmd.Start() 
err = cmd.Wait() 
+0

, 다음 좀 더 파고 후, 나는 그래서 내가 stderr에 출력되는 실행하고있는 응용 프로그램을 발견 내 상황에 약간의 변화가 있었고 이것이 효과가있었습니다. – PrestonDocks