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

标签 linux node.js windows

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

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

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

请帮我找到一种创建此类文件的方法,该文件的存在与正在使用的文件直接相关。

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

最佳答案

考虑如下 shell 脚本:

#!/bin/sh

trap '' INT HUP TERM

read fname
read dummy

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

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

我已经看到 Java 应用程序使用了类似的方法,它们确实希望在 JVM 退出时清理一些临时目录层次结构:让帮助程序脚本执行此操作。只需确保在您的主应用程序运行时通向助手的管道没有关闭。

这可能符合您“忽略良好做法和约定”的建议...

关于linux - 如何在退出时删除/取消链接文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30673481/

相关文章:

windows - 如何拆分一个巨大的文件夹?

linux - awk 只在 while 循环内打印第一行,除非回显,理论解释

javascript - 嵌套回调异步运行

javascript - 从 MS Sql 请求表 - Node.js Web 服务

javascript - Handlebars 和 Node.js : {{#if ! 用户}} 然后显示登录按钮

windows - 当某些文件名包含星号时无法在 Windows 上克隆 git repo

java - 默认以 super 用户身份执行linux命令

linux - Bash 复制文件夹内容,而不是文件夹

没有 'video system' 的 Python GUI

python - 如何在 Windows 上的 winpython 中更新 scipy?