如何在退出时删除/取消链接文件

时间:2015-06-05 18:33:02

标签: linux node.js windows

如何在Node中创建,以便在进程终止或暂停执行时,我用fs.openSync(filename, 'w');打开的某个文件被删除/取消链接?

在Windows上,如果我创建文件然后我立即调用fs.unlinkSync(filename);,则其他程序可以看到该文件。此外,当创建它的程序终止时,文件也会消失。

在Linux上,上述情况并非如此,因为在我取消链接之后,当另一方尝试检查文件的存在时,它无法以我所知的任何形状或形式找到它。
除非以特定方式安装驱动器,否则不会强制执行锁定 如果我试图找到一种方法在回调中调用fs.unlinkSync(filename);SIGINTSIGTSTP等等......我总能找到一种方法来停止程序,之后文件不会消失。

请帮我找一个创建此类文件的方法,其中与正在使用的文件直接相关。

(请暂时忽略良好做法和惯例)。

1 个答案:

答案 0 :(得分:3)

考虑一个shell脚本,如:

#!/bin/sh

trap '' INT HUP TERM

read fname
read dummy

[ -f "$fname" ] && rm -f "$fname"

如果您使用 popen(3)(或Node的等效项)来打开该脚本的管道,请在管道上写一个路径名,然后不对该管道执行任何其他操作,当您的应用程序退出时,调用的脚本将删除该文件,在“读取虚拟”行上看到EOF,因为您的应用程序的退出将关闭管道到调用的脚本。

我看过Java应用程序中使用的类似方法,我们真的希望在JVM出口处看到一些临时目录层次结构清理:让帮助程序脚本执行此操作。只需确保在主应用程序运行时没有关闭到帮助程序的管道。

这可能适合您的“忽视良好做法和惯例”建议......