> 백엔드 개발 > Golang > 쉘 명령의 출력(stdout, stderr)을 버퍼링되지 않게 만드는 방법은 무엇입니까?

쉘 명령의 출력(stdout, stderr)을 버퍼링되지 않게 만드는 방법은 무엇입니까?

王林
풀어 주다: 2024-02-06 09:12:10
앞으로
1259명이 탐색했습니다.

如何使任何 shell 命令的输出(stdout、stderr)不缓冲?

질문 내용

출력 버퍼링 없이 쉘 명령을 실행할 수 있는 방법이 있나요?

예를 들어 hexdump 文件 | ./my_script는 hexdump의 입력을 한 줄씩 전달하지 않고 버퍼링된 청크로만 my_script로 전달합니다.

모든 명령의 출력을 버퍼링되지 않게 만드는 일반적인 솔루션은 무엇입니까?


정답


내가 아는 한, 추악한 해킹 없이는 이 작업을 수행할 수 없습니다. 파이프에 쓰거나 파이프에서 읽으면 자동으로 전체 버퍼링이 켜지므로 이에 대해 할 수 있는 일은 없습니다. :-(. "라인 버퍼링"(원하는 것)은 터미널에서 읽고 쓸 때만 사용됩니다. 추악한 해킹이 바로 그들이 하는 일입니다. 파이프라인의 다른 도구가 라인 버퍼 모드에서 해당 터미널을 읽고 쓸 수 있도록 프로그램을 의사 터미널에 연결합니다. 전체 문제는 다음과 같습니다.

이 페이지는 unbuffer 或使用 LD_PRELOAD를 사용하여 몇 가지 트릭을 수행하기 위한 몇 가지 제안(앞에서 언급한 "못생긴 해킹")도 제공합니다.

위 내용은 쉘 명령의 출력(stdout, stderr)을 버퍼링되지 않게 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿