![仅当 FIFO 存在时才写入](https://linux22.com/image/117531/%E4%BB%85%E5%BD%93%20FIFO%20%E5%AD%98%E5%9C%A8%E6%97%B6%E6%89%8D%E5%86%99%E5%85%A5.png)
我看到的大多数关于写入 FIFO 的示例都说使用echo
orcat
命令并将 stdout 重定向到文件。例如,
echo 'a' > /tmp/my_fifo
但是,如果 FIFO 尚不存在,这将创建一个常规文件。是否有一些与mkfifo
but 类似的东西,如果不存在的话,写作就会失败?也就是说,类似于:
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 中运行。