什么需要("child_process")实际上做什么?

Ork*_*zen 5 child-process node.js

当我们打电话:

var p = require(child_process);
Run Code Online (Sandbox Code Playgroud)

我们是否已经在创建子流程?(如果不是,p这里有什么?)

为了解释我的混乱,在我拿起的代码库中,我看到:

var childProcess1 = require("child_process");
var  _retrieveChild = childProcess1.fork(
           __dirname + '/backgroundProcesses/DadProcess',
           { execArgv: ['--debug=5859'] }
        );
Run Code Online (Sandbox Code Playgroud)

我问自己,是否正在创建一个来自子进程的另一个进程,或者childProcess1只是一个非常严重的名称?

jak*_*lla 15

需要模块有时可以初始化模块,所以不要对不知道感到不快.他们都是不同的.然而,child_process并非通过要求模块为你做简单的创建一个进程.您必须调用fork()spawn()(或exec())实际创建一个新进程(和PID).

如果查看文档,您可以看到他们有时会使用这种语法:

var spawn = require('child_process').spawn;
// ...
spawn('ps', ['ax']);
Run Code Online (Sandbox Code Playgroud)

它基本上抓住了模块API,然后spawn关闭了该方法,并将其别名为局部变量,以便稍后在代码中使用.

编辑

为了便于您理解,只需在Node模块内部,模块决定要"导出"的内容.无论它出口什么,都将从require(...)通话中返回.例如,如果我们有这个模块:

// foo.js
module.exports = function() {
    return "bar";
};
Run Code Online (Sandbox Code Playgroud)

然后require("foo")会给我们一个函数(但它还没有被调用):

var mymodule = require("foo");
var result = mymodule(); // <-- this calls the function returned via module.exports
console.log(result); // "bar"
Run Code Online (Sandbox Code Playgroud)