当我们打电话:
var p = require(child_process);
我们是否已经在创建子流程? (如果没有,这里的p是什么?)
为了解释我的混乱,在我拿起的代码库中,我看到:
var childProcess1 = require("child_process"); var _retrieveChild = childProcess1.fork( __dirname + '/backgroundProcesses/DadProcess',{ execArgv: ['--debug=5859'] } );
解决方法
需要模块有时可以初始化模块,所以不要对不知道感到不快.他们都是不同的.但是,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"