Как работает внутренний код lchown nodejs?

#javascript #node.js #filesystems

#javascript #node.js #файловые системы

Вопрос:

В настоящее время я пытаюсь узнать, как lchown nodejs изменяет UID и GUID, если указанный путь является символической ссылкой. Проблема в том, что я абсолютно сбит с толку, поскольку, похоже, он вызывает сам себя в строке кода ниже:

 binding.lchown(pathModule.toNamespacedPath(path), uid, gid, req);
  

Ссылка на внутренний код:
https://github.com/nodejs/node/blob/10eaf6a09feee78275d5c1f84ce46815d8a8772f/lib/fs.js#L1084

Ответ №1:

Он не вызывает сам себя. Это вызов binding.lchown .

Я ничего не знаю о Node.js внутренности, но, судя по внешнему виду кода, кажется очевидным, что binding это ссылка на какой-то внутренний модуль, возможно, написанный на C или C :

 const binding = internalBinding('fs');
  

Комментарии:

1. Я понимаю! Большое спасибо.

2. Есть ли изящный трюк, чтобы увидеть содержимое внутреннего модуля?

3. Как я уже писал, я ничего не знаю о Node.js внутренности, я не знаю C , и я не знаю C, так что я совершенно не тот человек, которого следует спрашивать. Я мог только искать и догадываться, так же, как и вы, например github.com/nodejs/node/search ? q=lchown filename:fs .*

4. Не беспокойтесь. Очень благодарен за помощь.