bash - 打开带有 exec 的管道挂起

标签 bash file-descriptor

我只想打开一个文件描述符用于读取

mkfifo my_fifo
exec 3<$my_fifo

这个挂了。

另一方面,当我这样做的时候

exec 3<>$my_fifo

然后就可以了。为什么?

最佳答案

打开 fifo(命名管道)进行读取会挂起,直到某个进程打开 fifo 进行写入,反之亦然。因此,当打开返回时,您知道管道的“另一端”已打开。

Linux 允许您双向打开管道。如果你这样做,管道的两端都是开放的,所以开放会立即返回。这是对 Posix 的扩展,并不适用于所有系统。

man 7 fifo 有更多信息。

关于bash - 打开带有 exec 的管道挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37420265/

相关文章:

mysql - 如何避免 MySQL/BaSH 中的特殊/转义字符

bash - 从 crontab 运行 bash 脚本

Windows Bash 和 Visual Studio Code : How can I launch bash as a run task?

python - 多个 urwid 调用获取终端大小使文件保持打开状态

Java:从打开的 RandomAccessFile 实例中获取文件名

c - 如何交换两个打开的文件描述符?

bash:带有无符号整数的for循环

c - 使用文件描述符打开读取文件

python-3.x - 为什么 select.select 告诉我它不可读

bash - 使用 bash 和 watch 监控 qemu-kvm