fifo_file=fifo.pipe
mkfifo $fifo_file
exec 6<>$fifo_file
rm $fifo_file
some_code_omit上面bash脚本创建了一个命名管道,并将其附加到一个文件描述符6
exec 6<>$fifo_file为什么在附加到文件描述符后立即删除rm $fifo_file文件?我可以像下面这样写代码吗?
fifo_file=fifo.pipe
mkfifo $fifo_file
exec 6<>$fifo_file
some_code_omit
rm $fifo_file它们之间有什么不同吗?
rm $fifo_file表示删除$fifo_file的名称,而不是删除文件$fifo_file,在rm $fifo_file之后,该文件仍然存在。
发布于 2020-05-05 18:25:05
在创建并打开文件以进行读写之后,通过删除文件系统条目(这将使实际文件保持不变,直到它被关闭以进行读写),您可以避免无用的条目污染文件系统。不幸的是,这意味着如果脚本在rm命令运行之前终止,mkfifo命令将在下一次运行时失败:
$ mkfifo foo
$ mkfifo foo
mkfifo: cannot create fifo 'foo': File exists一种可能的改进是
trap 'rm --recursive "$working_directory"' EXIT
working_directory="$(mktemp --directory)"
fifo_file="${working_directory}/fifo.pipe"
…https://stackoverflow.com/questions/61607658
复制相似问题