>  기사  >  백엔드 개발  >  프로그램의 출력을 한 줄씩 스트림으로 읽는 개념이 있습니까?

프로그램의 출력을 한 줄씩 스트림으로 읽는 개념이 있습니까?

PHPz
PHPz앞으로
2024-02-05 23:18:13651검색

프로그램의 출력을 한 줄씩 스트림으로 읽는 개념이 있습니까?

질문 내용

라인을 표준 출력으로 지속적으로 스트리밍하는 쉘 명령(예: journalctl -f -o json)이 있습니다.

이 출력을 한 줄씩 검색하여 추가로 처리하고 싶습니다.

os/exec 的文档解决了如何读取命令的输出,io 스트림 버퍼링을 처리합니다.

모든 처리는 읽고, 처리하고, 추가로 쓰는 고정 버퍼를 통과하는 것 같습니다. 내 문제는 이 버퍼의 크기가 고정되어 있고 내용과 무관하다는 것입니다.

들어오는 스트림(제 경우에는 셸 명령의 출력)을 한 줄씩 읽을 수 있는 방법이 있나요? 어쩌면 io 리더보다 더 높은 수준의 라이브러리가 있을까요? io 读者更高级的库?


正确答案


使用 cmd.stdoutpipe() 获取(管道)使用 cmd.start() 启动该进程之前的输出( start()

정답

bufio.scanner 读取输入 (io.reader cmd를 사용하세요 .stdoutpipe() cmd.start(를 사용하여 (파이프라인) 가져오기 ) 프로세스를 시작하기 전 출력( start() 는 명령을 시작하지만 완료될 때까지 기다리지 않습니다).

그리고

) 한 줄씩 사용하세요.

예를 들어, 다음 bash 스크립트를 사용하여 현재 시간을 3번 인쇄하고 각 시간 사이에 1초씩 절전 모드로 전환합니다.

으아아아

이 명령을 실행하고 출력을 한 줄씩 읽는 예: log 包,以验证每行在第二次延迟后打印,另一个时间戳是 date 으아아아

샘플 출력: 🎜 으아아아 🎜 (각 줄 시작 부분의 첫 번째 날짜/시간은 🎜 명령의 출력에서 ​​나옵니다.) 🎜

위 내용은 프로그램의 출력을 한 줄씩 스트림으로 읽는 개념이 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제