如何在 Bash 中精确地创建一个读取系统调用?

如何在 Bash 中精确地创建一个读取系统调用?

我想要做的是在数据到达时进行处理,与换行符无关。

  • read -n $n在 stdin 上使用管道时,Bash 会对read (0, buf, 1)每个字节进行一次系统调用,如果要处理的数据量不小(例如,1 MB 或更多),则速度会太慢。
  • 当使用read -N $nBash 时会重复进行系统调用read (0, buf, <RestOf$n>)直到$n达到,所以我无法开始处理迄今为止收到的内容。
  • 使用时,即使读取了一些数据,read -N $n -t 0.1结果也是空的。这意味着:数据丢失了。这是 Bash 的一个错误还是一个功能?$REPLY

那么,我怎样才能使用read任意参数进行一次count系统调用bash,然后处理迄今为止收到的输入?

相关内容