Bash 3.2에서 비차단 읽기를 수행하고 POSIX 환경으로 이식할 수도 있습니까?
최신 버전의 bash에서는 이것이 작동 read -r -d'' -t $TIMEOUT -N $NBYTES myvar
하지만 bash 3.2를 지원해야 합니다. bash 3.2는 -N
존재하지 않으며 myvar
시간 초과 후에도 쓰지 않고 읽기 데이터의 일부가 손실됩니다.
dd
GNU 특정 매개 변수 사용을 제안하는 다른 답변을 보았지만 iflags
GNU가 있는지 확실하지 않기 때문에 작동하지 않습니다 dd
.
내 목표는 이식성이므로 Python, Perl 등으로 작성하고 싶지 않지만 가능하지 않으면 작성해야 합니다.
컨텍스트에 따라 내가 원하는 것은 script
출력을 파이프로 리디렉션하여 실행하는 것입니다. 내 bash 스크립트는 파이프에서 데이터를 읽고 사용할 수 있는 데이터 양이 있으면 이를 봉투에 싸서 출력합니다. 이를 통해 소비자는 여러 입력 스트림을 다중화할 수 있습니다. 제대로 작동하려면 대기 시간이 낮아야 하며 한 번에 1바이트가 아닌 합리적인 크기의 데이터 청크를 처리할 수 있어야 합니다.