Node.js 这些文件描述符用于什么?

Node.js 这些文件描述符用于什么?,node.js,Node.js,运行这个小脚本向我显示,当我运行它时,有12个打开的描述符。我知道0,1,2是stdin,stdout,sterr,但是其他9个呢?为什么它们都是打开的和空的?另外,fd9似乎是一个目录,我不知道如何读取它,因为fs.read返回错误:EISDIR,目录上的非法操作 fs = require('fs') for(var i = 0; i < 1000; i++) { console.log(i,fs.fstatSync(i).size) } fs=require('fs'))

运行这个小脚本向我显示,当我运行它时,有12个打开的描述符。我知道0,1,2是stdin,stdout,sterr,但是其他9个呢?为什么它们都是打开的和空的?另外,fd9似乎是一个目录,我不知道如何读取它,因为fs.read返回
错误:EISDIR,目录上的非法操作

fs = require('fs')

for(var i = 0; i < 1000; i++)
{
    console.log(i,fs.fstatSync(i).size)
}
fs=require('fs'))
对于(变量i=0;i<1000;i++)
{
log(i,fs.fstatSync(i).size)
}

您可以查看
/proc//fd/
。(如果您在linux上)

因此fd9的目录是根目录,其他目录是各种形式的特殊文件描述符。我假设节点在内部使用这两对管道在线程之间通信,因为没有其他进程使用它们(使用
lsof | grep656772
检查)

当然,这并没有告诉您原因,但它可能是第一个指针

如何读取它,因为fs.read返回错误:EISDIR,目录上的非法操作

应使用
fs.readdir


文档说明它接受目录路径,而不是fd作为第一个参数。那么,将文件描述符编号与
fs.readdir
一起使用是否可能且安全呢?哎哟,对不起,没有正确读取<如果
参数指定了写访问权限,并且文件是目录,则会发生code>EISDIR
错误。因此,您需要将标志设置为
read
,或者捕获类似的错误,然后使用上述任何方法重试。您的
/proc//fd/
列表仅显示10个fd,而我的有9个fd。是否有可能获得未列出的11和12个文件描述符的任何信息?您的代码在我的机器上只生成10个文件描述符。这很奇怪。至少我知道前9个fd是什么。非常感谢。
0 -> /dev/pts/16
1 -> /dev/pts/16
2 -> /dev/pts/16
3 -> pipe:[6567721]
4 -> pipe:[6567721]
5 -> anon_inode:[eventpoll]
6 -> pipe:[6567722]
7 -> pipe:[6567722]
8 -> anon_inode:[eventfd]
9 -> /