这是可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行的命令 unbuffer,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
unbuffer - 取消缓冲输出
概要
解除缓冲 程序 [ ARGS ]
引言
解除缓冲 禁用程序输出重定向时发生的输出缓冲
非交互式程序。 例如,假设您正在通过以下方式观察 fifo 的输出
通过 od 运行它,然后更多。
od -c /tmp/fifo | 更多的
在生成整页输出之前,您将看不到任何内容。
您可以按如下方式禁用此自动缓冲:
unbuffer od -c /tmp/fifo | 更多的
通常,unbuffer 不会从 stdin 读取。 这在某些情况下简化了 unbuffer 的使用
情况。 要在管道中使用 unbuffer,请使用 -p 标志。 例子:
进程1 | unbuffer -p process2 | 进程3
洞穴
如果向 unbuffer 提供输入的进程退出,则 unbuffer -p 可能无法正常工作。
考虑:
进程1 | unbuffer -p process2 | 进程3
如果 process1 退出,则 process2 可能尚未完成。 unbuffer 是不可能的
知道等待 process2 的时间很长,而 process2 可能永远不会完成,例如,如果它是一个
筛选。 为方便起见,unbuffer 在遇到来自其任一方的 EOF 时简单地退出
输入或过程2。
为了有一个适用于所有情况的 unbuffer 版本,一个 oracle 将是
必要的。 如果您需要特定于应用程序的解决方案、变通方法或手动编码的 Expect
可能更合适。 例如,以下示例显示了如何允许 grep
当猫在它完成之前先完成处理。 使用 cat 喂食 grep 会
在现实生活中永远不需要无缓冲。 它只是一些想象中的占位符
可能会或可能不会完成的过程。 同样,管道末端的最后一只猫
也是另一个进程的占位符。
$ cat /tmp/abcdef.log | grep abc | 猫
ABCDEF
xxxabc defxxx
$ cat /tmp/abcdef.log | 无缓冲 grep abc | 猫
$ (cat /tmp/abcdef.log ; 睡眠 1) | 无缓冲 grep abc | 猫
ABCDEF
xxxabc defxxx
$
使用 onworks.net 服务在线使用 unbuffer