gpt4 book ai didi

linux - 为什么 `read -t` 在 RHEL 上的 bash 中没有超时?

转载 作者:IT王子 更新时间:2023-10-29 00:51:39 25 4
gpt4 key购买 nike

为什么 read -t 在 RHEL5 或 RHEL6 上从管道读取时不会超时?

这是我的示例,它不会在我的 RHEL 机器上从管道读取时超时:

tail -f logfile.log | grep 'something' | read -t 3 variable

如果我是正确的,read -t 3 应该在 3 秒后超时吗?

非常感谢。

克里斯

GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)

最佳答案

chepner 给出的解决方案应该可行。

为什么您的版本不是这样的解释很简单:当您构建像您这样的管道时,数据从左到右流过管道。但是,当您的 read 超时时,左侧的程序将继续运行,直到它们注意到管道已损坏,并且只有在它们尝试写入管道时才会发生这种情况。

一个简单的例子是这样的:

cat | sleep 5

5 秒后管道将中断,因为 sleep 将退出,但是 cat 将继续运行直到您按下 return。

在您的情况下,这意味着,在 grep 产生结果之前,尽管超时,您的命令仍将继续运行。

关于linux - 为什么 `read -t` 在 RHEL 上的 bash 中没有超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16546644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com