>백엔드 개발 >Golang >실행 중에 부분 명령 출력을 실시간으로 스트리밍하려면 어떻게 해야 합니까?

실행 중에 부분 명령 출력을 실시간으로 스트리밍하려면 어떻게 해야 합니까?

DDD
DDD원래의
2024-12-27 09:04:11828검색

How Can I Stream Partial Command Output in Real-Time During Execution?

스트리밍 명령 출력 진행

명령을 실행하는 과정에서 지정된 출력 위치와 출력 모두로 출력을 스트리밍해야 하는 경우가 종종 발생합니다. 실시간 로그 파일. 그러나 시간이 오래 걸리는 프로세스를 처리할 때 cmd.StdoutPipe 메서드는 최종 결과만 문자열로 제공합니다. 이 기사에서는 명령 실행 프로세스 중에 부분 출력 스트리밍을 활성화하는 방법에 대해 설명합니다.

질문에 제공된 예는 bufio.NewScanner를 활용하여 파이프를 통해 표준 출력을 읽습니다. 일반적인 오해는 한 줄씩 읽는다는 것입니다. 실제로는 bufio.ScanLines 함수에 정의된 대로 개행 문자로 입력을 읽습니다. 실행된 명령이 줄 바꿈을 생성하지 않으면 출력이 즉시 반환되지 않습니다.

해결 방법:

이 제한을 극복하려면 대체 접근 방식을 고려하십시오.

  1. bufio.Split(bufio.ScanRunes): 이 방법 룬(문자)별 읽기를 허용하여 새 룬을 사용할 수 있을 때마다 출력 반환을 보장합니다.
  2. 수동 바이트/룬 읽기: 버퍼 배열을 생성하고 한 바이트를 반복적으로 읽는 작업이 포함됩니다. 또는 완전한 룬을 나타내는 바이트 조각입니다.

표준 출력과 오류를 모두 읽어 하위 프로세스에서 잠재적인 차단을 방지하는 것이 중요합니다. 전체 버퍼로. 기본적으로 하위 프로세스의 표준 출력 및 오류 스트림은 삭제됩니다. 그러나 표준 오류 스트림을 읽지 않으면 오류 메시지 누락이 발생할 수 있습니다.

위 내용은 실행 중에 부분 명령 출력을 실시간으로 스트리밍하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.