演示这个非常简单的方法是运行
mkfifo /tmp/a read -t 1 a < /tmp/a
阅读永不回报。
Bash手册说:这个选项只有在读取从terminal,pipe道或其他特殊文件读取input时才有效; 从常规文件读取时不起作用
但是/ tmp / a是一个pipe道,ls的输出是
ls -l /tmp/a prw-r--r-- 1 root root 0 Feb 4 22:18 /tmp/a
bash版本是:
GNU bash,版本4.3.46(1)-release(x86_64-pc-linux-gnu)Copyright(C)2013 Free Software Foundation,Inc.
操作系统是:
Ubuntu 16.04.1 LTS
当你从管道上读书时,也需要有人写信给管道。 “管道”只是一个沟通机制。 它不会“自动生成”任何输入; 它只是将其输入传递到输出端。 看来你只是在读,但没有人写入/tmp/a
。
当read
等待输入时,从另一个终端echo hello > /tmp/a
,您将看到read
返回并且a
具有值“hello”。
请阅读有关管道的详细信息: http : //man7.org/linux/man-pages/man7/pipe.7.html