linux stdbuf – line-buffered stdin选项不存在

stdbuf命令的手册页指出行缓冲模式作为标准输入缓冲选项无效.
这是什么原因?

tail -f access.log | stdbuf -iL cut -d' ' -f1 | uniq

stdbuf: line buffering stdin is meaningless
Try `stdbuf --help' for more information.

解决方法:

简化后,stdbuf是stdio功能的包装器.输入流的行缓冲在stdio中是未定义的;我找不到标准文件说明它意味着什么,所以就标准而言,它几乎毫无意义.

假设行为类似于stdout行缓冲,stdin的行缓冲需要为每个字符读取调用一次read(),因为没有其他方法可以保证您不会读取描述符上的换行符.由于缓冲的目的是减少系统调用的数量,因此stdio库不实现这一点并不令人惊讶.

上一篇:如何在输入特定密钥后立即退出C程序?


下一篇:将所有标准输入读入Java字节数组