如何在Node中创建,以便在进程终止或暂停执行时,我用fs.openSync(filename, 'w');
打开的某个文件被删除/取消链接?
在Windows上,如果我创建文件然后我立即调用fs.unlinkSync(filename);
,则其他程序可以看到该文件。此外,当创建它的程序终止时,文件也会消失。
在Linux上,上述情况并非如此,因为在我取消链接之后,当另一方尝试检查文件的存在时,它无法以我所知的任何形状或形式找到它。
除非以特定方式安装驱动器,否则不会强制执行锁定
如果我试图找到一种方法在回调中调用fs.unlinkSync(filename);
到SIGINT
,SIGTSTP
等等......我总能找到一种方法来停止程序,之后文件不会消失。
请帮我找一个创建此类文件的方法,其中与正在使用的文件直接相关。
(请暂时忽略良好做法和惯例)。
答案 0 :(得分:3)
考虑一个shell脚本,如:
#!/bin/sh
trap '' INT HUP TERM
read fname
read dummy
[ -f "$fname" ] && rm -f "$fname"
如果您使用 popen(3)(或Node的等效项)来打开该脚本的管道,请在管道上写一个路径名,然后不对该管道执行任何其他操作,当您的应用程序退出时,调用的脚本将删除该文件,在“读取虚拟”行上看到EOF,因为您的应用程序的退出将关闭管道到调用的脚本。
我看过Java应用程序中使用的类似方法,我们真的希望在JVM出口处看到一些临时目录层次结构清理:让帮助程序脚本执行此操作。只需确保在主应用程序运行时没有关闭到帮助程序的管道。
这可能适合您的“忽视良好做法和惯例”建议......