Posix shell/bash 3.2:从文件描述符中非阻塞读取

Posix shell/bash 3.2:从文件描述符中非阻塞读取

是否可以在 bash 3.2 中进行非阻塞读取,并且也可以移植到 POSIX 环境?

在现代版本的 bash 中,可以使用read -r -d'' -t $TIMEOUT -N $NBYTES myvar,但我需要支持 bash 3.2,其中-N不存在,并且超时后myvar不会写入,并且部分读取的数据会丢失。

我看到过其他答案建议使用ddGNU 特定的iflags参数,但这对我来说不起作用,因为我不能确定 GNUdd是否存在。

因为我的目标是可移植性,所以我不想用 Python、Perl 等来编写它,但如果这是不可能的,我就必须这样做。

对于上下文,我想要做的是script将其输出重定向到管道来运行。我的 bash 脚本将从管道中读取数据,当有任何数量的数据可用时,它会将其包装在信封中并输出。这将使消费者能够多路复用多个输入流。为了使其性能良好,它需要低延迟,并且还可以处理合理大小的数据块(而不是一次 1 个字节)。

相关内容