我一直在尝试创建一个临时命名的 fifo 并在引用Bash: create anonymous fifo我看到他们正在使用mktemp -u
来获取 fifo 的文件名。手册页指出这是不安全的。
-u, --dry-run
do not create anything; merely print a name (unsafe)
Run Code Online (Sandbox Code Playgroud)
为什么这是不安全的,我如何负责任地使用这种技术?
小智 7
他们上面所说的“不安全”的含义如下。假设你有这个场景:
mktemp -u
/tmp/tmp.njxOsokU9u
tmp
)echo hello > $tmp
)没有错,是吗?这是一个类似的场景:
mktemp -u
/tmp/tmp.njxOsokU9u
tmp
)/tmp/tmp.njxOsokU9u
)echo hello > $tmp
)现在您的脚本和其他进程可能正在写入同一个文件,这可能不会很好地结束。这就是它被标记为不安全的原因。