unix中的程序如何知道输入流是否“结束”?

问题描述 投票:0回答:1

也许我在问题中没有使用正确的术语,因此我将在这里用一个清晰的例子进行详细说明。

您可以将命令的输出发送到命令行实用程序fzf,如果前者仍在运行,fzf会让您知道它显示“加载图标”并实时刷新。举个清楚的例子:

for i in `seq 1 5`; do echo $i; sleep 1 ; done | fzf

现在,我想了解 fzf 如何知道流尚未完成。相关但更进一步,我希望能够做同样的事情,但传递一个文件。

for i in `seq 1 5`; do echo $i; sleep 1 ; done > file.txt  &

如何将

file.txt
的内容发送live到fzf?我已经尝试过
fzf < file.txt
但它发送了文件的静态版本,就像编写命令时一样。它不让它活着

bash unix fzf
1个回答
0
投票

unix中的程序如何知道输入流是否“结束”?

read
系统调用返回时
0

fzf 如何知道流尚未结束

fzf
对“流”一无所知。
fzf
调用
read
系统调用并停留在系统调用中,直到有东西要返回。

如何将 file.txt 的内容实时发送到 fzf?

通常,

tail -f
用于在输出内容时“跟随”文件末尾。

© www.soinside.com 2019 - 2024. All rights reserved.