在我的系统(最近更新的 Arch Linux)上,联机帮助页stdbuf
的“BUGS”部分包含以下内容:
在 GLIBC 平台上,指定缓冲区大小,即使用完全缓冲模式将导致未定义的操作。
除了有点好奇为什么会这样以及“未定义的操作”是什么意思之外,我最担心的是这是否意味着我永远不应该为命令指定缓冲区大小,以及它是否会在我面前爆炸如果我愿意。
在我的系统(最近更新的 Arch Linux)上,联机帮助页stdbuf
的“BUGS”部分包含以下内容:
在 GLIBC 平台上,指定缓冲区大小,即使用完全缓冲模式将导致未定义的操作。
除了有点好奇为什么会这样以及“未定义的操作”是什么意思之外,我最担心的是这是否意味着我永远不应该为命令指定缓冲区大小,以及它是否会在我面前爆炸如果我愿意。
看起来这只是以前版本的遗留下来的
stdbuf
,已经不符合现实了。在的源代码的评论中
stdbuf
,它说:但是实际的代码继续并(不情愿地?)分配缓冲区本身而不是依赖 C 库来完成它,完全绕过了那个有问题的行为。
此外,这(来自同一条评论)似乎不再是这样了:
无论我对
-i
和-o
选项给出什么参数,它似乎都能很好地处理它们。例子: