fs.js中的`process.binding('fs')是什么?

我在fs.js顶部看到了一个process.binding('fs')

https://github.com/nodejs/node/blob/master/lib/fs.js#L10 :

 const binding = process.binding('fs'); 

然后,它被用作:

 binding.open(pathModule._makeLong(path), stringToFlags(flag), 0o666, req); 

(在https://github.com/nodejs/node/blob/master/lib/fs.js#L303-L306 )

我的问题是:

  • process.binding('fs')是什么意思?
  • 这里是什么fs (我们已经在fs.js )?
  • 我在哪里可以findbinding.open的源代码? 是Javascript代码还是c / c ++代码?

  1. process.binding()是一个内部API,用于获取对各种核心C ++绑定的引用。
  2. process.binding('fs')中的process.binding('fs')是对fs模块的C ++绑定 (节点源树中的src/node_file.cc process.binding('fs')的引用。
  3. 如前所述, process.binding()引用了C ++绑定,因此在这种情况下, binding.open()被导出到这里并在 这里定义。