仅当 FIFO 存在时才写入

仅当 FIFO 存在时才写入

我看到的大多数关于写入 FIFO 的示例都说使用echoorcat命令并将 stdout 重定向到文件。例如,

echo 'a' > /tmp/my_fifo

但是,如果 FIFO 尚不存在,这将创建一个常规文件。是否有一些与mkfifobut 类似的东西,如果不存在的话,写作就会失败?也就是说,类似于:

echo 'a' | write-to-existing-file /tmp/my_fifo

答案1

根据 BASH 手册:

-p file
   True if file exists and is a named pipe (FIFO).

所以:

if [[ -p /tmp/my_fifo ]]; then
    # commands to execute
fi

问题有标签,巴什。在上下文中,[[和的用法]]特定于 BASH。 (切线,[[]]可以使用 zsh 和 Korn shell。)请参阅Bash常见问题解答/031。应使用[和编写可移植脚本,]该脚本可在所有 POSIX shell 中运行。

相关内容