gpt4 book ai didi

node.js - 如果在 writeFileSync 操作期间中止 Node 脚本,文件会发生什么情况?

转载 作者:行者123 更新时间:2023-12-04 07:19:25 24 4
gpt4 key购买 nike

假设我在包含以下内容的 Linux 环境中运行一个 Node 脚本:

fs.writeFileSync("output.json", JSON.stringify(data))
然后,我在 writeFileSync 之后中止脚本(cmd/ctrl + c)操作已经开始,但还没有完成。 “output.json”是否存在?如果是,它是否包含任何数据?

最佳答案

我在 Windows 10 上做了一个快速测试,得到了一些有趣的结果:

  • 向磁盘写入比可用磁盘空间多的数据将导致有关可用磁盘空间不足的错误。尽管如此,该文件仍将被创建,具有 0 个字节。
  • 我创建了一个包含 1 GB 数据的缓冲区并尝试将其写入 HDD 上的文件。大约需要 10 秒才能完成写入。如果我终止该进程,它将被“锁定”,例如试图再次杀死它的错误。该进程仍会继续向文件写入数据,并且只有在写入完成后才会消失。每个字节都被写入文件,即使我终止了进程,如果那时物理上不可能写入完整的 1 GB。
  • 走得更远。再次运行上述测试,但使用 fs.openSyncfs.writeSync .在两次调用之间,我花时间在 Process Explorer 中查找文件句柄,然后在 fs.writeSync 期间将其关闭。称呼。现在 PE 卡住,直到写入关闭。同时尝试使用任务管理器结束 Node 进程。结果?每个字节仍然写入文件。
  • 毕竟,我尝试了问题的实际建议:开始写入文件,然后立即 ctrl+c . Node 抛出一个很好的错误并立即退出,但文件仍然以 0 字节创建。 不过,您的里程可能会有所不同。特别是如果您设置了信号处理。

  • 我并没有在写入过程中切断电源或拔掉磁盘,尽管那时它可能取决于操作系统/磁盘,取决于接下来会发生什么。似乎 NodeJS 总是会创建文件。这并不奇怪,因为 fs.openSync('path', 'w')已经这样做了,尽管仍然有点出乎意料,但它甚至在错误磁盘空间不足之前成功创建了(空)文件。

    关于node.js - 如果在 writeFileSync 操作期间中止 Node 脚本,文件会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68596404/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com