나는 프로그램 (또한 Go)과 같은 서버를 실행하는 프로그램을 Go로 작성하고 있습니다. 이제 부모 프로그램을 시작한 터미널 창에서 자식 프로그램의 표준 출력을 원합니다. 이를 수행하는 한 가지 방법은 cmd.Output()
함수를 사용하는 것이지만 프로세스가 종료 된 후에 만 stdout을 인쇄합니다. (이 서버와 같은 프로그램이 오랫동안 실행되고 로그 출력을 읽고 싶기 때문에 문제입니다)
변수 out
는 of type io.ReadCloser
이고 내 작업을 수행하기 위해 무엇을해야하는지 모르겠으며이 주제에 대한 웹에서 유용한 정보를 찾을 수 없습니다.
func main() {
cmd := exec.Command("/path/to/my/child/program")
out, err := cmd.StdoutPipe()
if err != nil {
fmt.Println(err)
}
err = cmd.Start()
if err != nil {
fmt.Println(err)
}
//fmt.Println(out)
cmd.Wait()
}
코드 설명 : Println
컴파일 할 코드를 얻으려면 함수의 주석 처리를 제거하십시오 Println(out io.ReadCloser)
. 의미있는 함수가 아님을 알고 있습니다.
(출력을 생성합니다 &{3 |0 <nil> 0}
)이 두 줄은 코드를 컴파일하는 데 필요합니다.
io.Copy
이동 루틴 내에서
cmd.Wait()
나 for{}
루프 를 할 필요가 없다고 생각합니다 ... 왜 여기에 있습니까?