Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux bash重定向写防止创建_Linux_Bash_Pipe - Fatal编程技术网

Linux bash重定向写防止创建

Linux bash重定向写防止创建,linux,bash,pipe,Linux,Bash,Pipe,进程A创建命名管道以接收来自脚本B的命令。退出时,它将删除命名管道。将脚本写入此管道的命令如下所示: echo start > /run/command.fifo 但如何防止脚本在命名管道不存在时创建名为/run/command.fifo的文件。写入前添加检查不安全: [ -p /run/command.fifo ] || exit 1 echo start > /run/command.fifo 因为检查后管道可能会被删除。然后像这样 [[ -p /run/command.fi

进程A创建命名管道以接收来自脚本B的命令。退出时,它将删除命名管道。将脚本写入此管道的命令如下所示:

echo start > /run/command.fifo
但如何防止脚本在命名管道不存在时创建名为/run/command.fifo的文件。写入前添加检查不安全:

[ -p /run/command.fifo ] || exit 1
echo start > /run/command.fifo
因为检查后管道可能会被删除。

然后像这样

[[ -p /run/command.fifo ]] && echo start > /run/command.fifo || echo 'fifo not exist'

仍然不安全,与我的示例脚本没有区别。这里什么不安全?只有当fifo存在时,Echo才会启动。否则,我们可以添加一些错误消息。当Echo执行时,fifo可能已被删除。这里有一个争用-可以在争用后删除管道[但在Echomable复制之前,老实说,这看起来是错误的-您应该将文件描述符重定向到fifo,然后处理关闭文件描述符的问题,而不是文件存在的问题。@KamilCuk您可能喜欢这样: