node.js - 如果使用 openSync 打开文件,如何在 node.js 中获取文件描述符

标签 node.js file-io asynchronous synchronous

我注意到对于 openSync 来说可能是个大问题,当您使用 openSync 打开文件时,您不会获得文件描述符。如果您使用异步调用打开,您只能将其作为回调的参数获取。问题是你必须有文件描述符来关闭文件!程序员可能还想对您需要文件描述符的文件执行其他操作。

在 node.js 的 fs API 中似乎有一个重大遗漏,即不提供一种方法来访问 fd 变量,如果您使用同步调用打开,则在异步模式下打开时回调返回该变量。这基本上会使同步打开对大多数应用程序不可用。

如果可以避免的话,我真的不想在以后的开发中使用异步文件打开和关闭,有什么方法可以获取 fd 变量我需要在使用同步时成功关闭文件打开?

最佳答案

除了文件描述符之外,您还能从 openFileSync 获得什么?

var fs = require('fs')
var path = require('path')
var fd = fs.openSync(path.join(process.cwd(), 'log.txt'), 'a')
fs.writeSync(fd, 'contents to append')
setTimeout(function () {
  console.log('closing file now')
  fs.closeSync(fd)
}, 10000)

在上面的 Node 脚本运行时运行 lsof/path/to/log.txt 并在脚本运行后再次运行 lsof/path/to/log.txt done 显示文件正在正确关闭

也就是说,您打开文件的目的是什么?也许有更好的方法,例如针对您的具体情况进行流式传输

关于node.js - 如果使用 openSync 打开文件,如何在 node.js 中获取文件描述符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16106111/

相关文章:

javascript - readFileSync from node.js fs 库可以从文本文件加载数组吗?

javascript - 如何在 node.js 中创建路由并包含 html 代码

node.js - AWS Api Gateway 未在 204 上设置 CORS

python - 如何修复Python 3.7中的 'RuntimeError: input(): lost sys.stdin'错误

java - 当应用程序意外退出时处理文件锁定

iOS SDWebImage 淡入新图像

ios - 无法在 Node.JS 和 React-Native (Socket.IO) 之间建立连接

c - 在两个文件中添加两个数字,然后将其写入另一个文件。数字太大,不适合整数范围

angularjs - 等待循环中的异步函数在下一次迭代之前完成执行

node.js - 并行运行多个异步函数