微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

node.js – require(“child_process”)实际上做了什么?

当我们打电话:

var p = require(child_process);

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

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

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

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

解决方法

需要模块有时可以初始化模块,所以不要对不知道感到不快.他们都是不同的.但是,child_process不会像完成任务那样需要模块来创建进程.您必须调用 fork()spawn()(或exec())来实际创建新进程(和PID).

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

var spawn = require('child_process').spawn;
// ...
spawn('ps',['ax']);

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

编辑

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

// foo.js
module.exports = function() {
    return "bar";
};

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐