iru*_*var 6 linux buffer stdin
stdbuf 命令的手册页指出,行缓冲模式作为标准输入缓冲选项无效。这是什么原因?
tail -f access.log | stdbuf -iL cut -d' ' -f1 | uniq
stdbuf: line buffering stdin is meaningless
Try `stdbuf --help' for more information.
Run Code Online (Sandbox Code Playgroud)
简而言之,stdbuf 是 stdio 功能的包装器。输入流的行缓冲在 stdio 中未定义;我找不到任何标准文件说明它的含义,因此就标准而言,它实际上毫无意义。
假设行为类似于 stdout 行缓冲,stdin 的行缓冲需要为每个字符读取调用一次 read(),因为没有其他方法可以保证您不会读取描述符上的换行符。由于缓冲的目的是减少系统调用的数量,因此 stdio 库没有实现这一点也就不足为奇了。
小智 7
作为 stdbuf 的作者,让我将您引导至http://www.pixelbeat.org/programming/stdio_buffering/上的“stdio 输入缓冲问题”部分
归档时间: |
|
查看次数: |
3242 次 |
最近记录: |