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

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

王林
王林앞으로
2024-02-06 09:12:101267검색

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

질문 내용

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

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

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


정답


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

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

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

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