문제:
exec.Command를 사용하여 프로세스를 실행할 때 어떻게 할 수 있습니까? 출력을 로그인으로 리디렉션합니다. 실시간?
컨텍스트:
프로세스가 완료될 때까지 기다린 다음 결합된 출력을 기록하는 기존 접근 방식은 장기 실행되거나 완료되지 않은 프로세스에 적합하지 않습니다. . 실시간으로 stdout에 쓰는 것도 터미널을 사용하지 않는 서비스에는 도움이 되지 않습니다.
해결책:
실시간으로 프로세스 출력을 캡처하고 기록하려면 , 파이프를 활용할 수 있습니다.
stdout, err := cmd.StdoutPipe() if err != nil { return 0, err } // Start the command after setting up the pipe if err := cmd.Start(); err != nil { return 0, err } // Read the command's stdout line by line in := bufio.NewScanner(stdout) for in.Scan() { log.Printf(in.Text()) // Log each line } if err := in.Err(); err != nil { log.Printf("error: %s", err) }
이 접근 방식을 사용하면 다음을 사용하여 stdout과 stderr을 모두 캡처할 수 있습니다. 고루틴.
위 내용은 Golang에서 실시간으로 Exec 명령 출력을 로그인으로 리디렉션하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!