Node.js 需要(“子进程”)实际做什么?
当我们打电话时:Node.js 需要(“子进程”)实际做什么?,node.js,child-process,Node.js,Child Process,当我们打电话时: var p = require(child_process); 我们已经在创建子进程了吗?(如果不是,这里的p是什么?) 为了进一步解释我的困惑,在我拿起的一个代码库中,我看到: var childProcess1 = require("child_process"); var _retrieveChild = childProcess1.fork( __dirname + '/backgroundProcesses/DadProcess',
var p = require(child_process);
我们已经在创建子进程了吗?(如果不是,这里的p
是什么?)
为了进一步解释我的困惑,在我拿起的一个代码库中,我看到:
var childProcess1 = require("child_process");
var _retrieveChild = childProcess1.fork(
__dirname + '/backgroundProcesses/DadProcess',
{ execArgv: ['--debug=5859'] }
);
我在问自己,它是在从一个子进程创建另一个进程,还是childProcess1
只是一个选择不当的名称?需要模块有时会初始化模块,所以不知道也不必难过。他们都不一样。但是,child\u进程
并没有像您所做的那样简单地通过要求模块来创建一个进程。您必须调用or(或exec()
)来实际创建新进程(和PID)
如果您查看文档,您会发现有时他们会使用以下语法:
var spawn = require('child_process').spawn;
// ...
spawn('ps', ['ax']);
它基本上获取模块API,然后从中派生出方法,并将其别名为局部变量,以便稍后在代码中使用
编辑
为了便于理解,我们在此进行扩展,在节点模块内部,模块决定“导出”什么。无论它导出什么,都是从require(…)
调用返回的内容。例如,如果我们有这个模块:
// foo.js
module.exports = function() {
return "bar";
};
然后,require(“foo”)
将为我们提供一个函数(但它还没有被调用):
var mymodule=require(“foo”);
var result=mymodule();// 充当、、和函数的命名空间。您可以调用require(“child\u process”)
来引用该模块,然后调用其一个成员函数来创建一个新流程
每个函数的返回值都是a,它表示生成的进程,并包含诸如stdin
、stdout
、和pid
之类的成员。如果您对它的功能有疑问,请检查它返回的内容
var childProcess = require('child_process')
console.log(childProcess);
您可能会这样(取决于Node.js版本):
ChildProcess的最新节点版本。require
解析模块;在这种情况下,child\u过程
谢谢!然后我不得不说,child_进程是一个糟糕的名称选择。很好的解释,先生。你能给出解决方案如何在我日常使用的API中使用child进程,比如从mongo获取数据或读取上传图像吗?
var childProcess = require('child_process')
console.log(childProcess);
{ ChildProcess:
{ [Function: ChildProcess]
super_:
{ [Function: EventEmitter]
EventEmitter: [Circular],
usingDomains: false,
defaultMaxListeners: 10,
init: [Function],
listenerCount: [Function] } },
fork: [Function],
_forkChild: [Function],
exec: [Function],
execFile: [Function],
spawn: [Function],
spawnSync: [Function: spawnSync],
execFileSync: [Function: execFileSync],
execSync: [Function: execSync] }