저는 stdin을 통해 다른 프로그램에 데이터를 보내고 stdout을 통해 응답을 읽는 go 프로그램을 작성 중입니다.
다음은 일종의 "에코 서버" 역할을 하는 스크립트입니다.
으아아아Go에서 프로그램과 통신하려고 하면 멈춥니다buf.ReadLine()
. 이것은 내 Go 코드입니다:
Write()
函数不返回错误。但是,当我尝试 ReadLine()
하면 프로그램이 중단됩니다. 내가 뭘 잘못했나요?
이것은 Go 코드의 문제가 아닙니다. Python 프로그램이 출력을 버퍼링하는 이유는 stdout이 터미널이 아니라 파이프이기 때문입니다. 따라서 Go에서는 읽을 내용이 없고 두 프로세스 모두 교착 상태가 발생합니다. 입력을 기다리고 있으며 두 프로세스 모두 출력을 생성하지 않습니다.
Python에서 처리하는 방법은 인쇄 함수를 플러시하는 방법 또는 출력 버퍼링 비활성화을 참조하세요. 첫 번째는 단일 인쇄 문에 적용되고 두 번째는 전체 프로그램에 적용됩니다. 간단한 예에서는 모두 동일하지만 다른 경우에는 다를 수 있으므로 옵션을 아는 것이 좋습니다.
위 내용은 Go에서 exec.Command를 사용하여 파이프에서 읽을 수 없습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!