证明这一点的一个非常简单的方法是运行
mkfifo /tmp/a
read -t 1 a < /tmp/a
Run Code Online (Sandbox Code Playgroud)
阅读永远不会返回。
Bash 手册说:此选项仅在 read 从终端、管道或其他特殊文件读取输入时有效;从常规文件读取时无效
但是 /tmp/a 是一个管道, ls 的输出是
ls -l /tmp/a
prw-r--r-- 1 root root 0 Feb 4 22:18 /tmp/a
Run Code Online (Sandbox Code Playgroud)
bash 版本是:
GNU bash,版本 4.3.46(1)-release (x86_64-pc-linux-gnu) 版权所有 (C) 2013 Free Software Foundation, Inc.
操作系统是:
Ubuntu 16.04.1 LTS
Run Code Online (Sandbox Code Playgroud)