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

我已经注意到openSync可能是个大问题,当你用openSync打开一个文件时,你不会得到文件描述符。 如果使用asynchronous调用打开,则只会将其作为callback的参数。 问题是你必须有文件描述符来closures文件! 还有一些程序员可能想要对文件做一些其他的事情,你也需要文件描述符。

在fs API中,node.js似乎没有提供一种访问fdvariables的方法,如果您打开使用同步调用,则在asynchronous模式下打开时,会返回callback。 这基本上使同步开放对大多数应用程序不可用。

我真的不希望不得不使用asynchronous文件打开和closures在我的发展,如果我可以避免它,有没有办法获得fdvariables我需要在使用同步打开时成功closures文件?

除了文件描述符之外,还能从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) 

在上面的节点脚本正在运行时运行lsof /path/to/log.txt并在脚本完成后再次运行lsof /path/to/log.txt显示文件正在被正确closures

这就是说你打算通过打开文件来完成什么? 也许有一个更好的方式,例如为您的具体情况stream