请教写pm的大神关于Nodejs argv的问题
请教写pm的大神关于Nodejs argv的问题
近期一直在试用你的PM,很强大。但碰到一个关于ARGV的问题
我看lib/master.js中 Master.prototype.register = function (name, file, options, argv) 有个入参argv,请问这个值如何传到worker(如http.js,daemon.js)中? 我TRACE了下,发现最后停在了child_process.fork这个动作,但这个动作官网代码貌似将其注释了 function nop() { }
exports.fork = function(modulePath /, args, options/) {
// Get options and args arguments. var options, args, execArgv; 能否帮忙给个简单ARGV使用例子?
当然可以!在Node.js中,process.argv
是一个数组,包含了启动Node.js进程时的命令行参数。argv
参数通常用于在子进程中传递额外的命令行参数。下面是一个简单的例子来说明如何在主进程中使用 argv
并将这些参数传递给工作进程。
示例代码
主进程(master.js)
const { fork } = require('child_process');
// 从命令行获取参数
const args = process.argv.slice(2);
// 启动子进程并传递参数
const worker = fork('./worker.js', args);
worker.on('message', (msg) => {
console.log('Worker said:', msg);
});
worker.send({ message: 'Hello from master' });
子进程(worker.js)
process.on('message', (msg) => {
console.log('Message from master:', msg.message);
});
// 获取传递过来的命令行参数
console.log('Command line arguments received:', process.argv.slice(2));
process.send({ message: 'Hello from worker' });
运行示例
假设你将上述代码保存为 master.js
和 worker.js
,你可以通过以下方式运行主进程:
node master.js arg1 arg2
解释
-
主进程 (
master.js
):- 使用
process.argv.slice(2)
来获取命令行参数。 - 调用
fork
方法启动子进程,并将命令行参数传递给子进程。 - 通过
worker.send
发送消息给子进程,并监听来自子进程的消息。
- 使用
-
子进程 (
worker.js
):- 监听来自主进程的消息。
- 打印接收到的命令行参数。
- 通过
process.send
发送消息给主进程。
通过这种方式,你可以将命令行参数从主进程传递到子进程,并在子进程中进行相应的处理。希望这个示例能帮助你更好地理解 argv
的使用方法。
必要的话用 at… 不然怎么看得到… aleafs
如果只是 argv, 文档上就有写的呀, http://nodejs.org/docs/latest/api/process.html#process_process_argv 直接打印出来看下什么不应该懂了吗
圈我就可以,我是 aleafs.
master.register('groupname', __scriptfile, {}, ['--hello', 'world', '--blabla']);
[代码
两种方法试验了下,都OK。多谢大神指点~~
两种方法试验了下,都OK。多谢大神指点~~
当然可以!在Node.js中,process.argv
可以用来获取命令行参数。当你在主进程中传递参数时,这些参数可以通过 child_process.fork
传递给子进程。
以下是一个简单的例子来说明如何使用 argv
参数从主进程传递到子进程:
主进程代码 (master.js)
const { fork } = require('child_process');
// 创建子进程,并传递一些命令行参数
const child = fork('./worker.js', ['arg1', 'arg2']);
child.on('message', (msg) => {
console.log('Message from worker:', msg);
});
child.send({ hello: 'world' });
子进程代码 (worker.js)
process.on('message', (msg) => {
console.log('Message from master:', msg);
});
console.log('Command line arguments received by worker:', process.argv.slice(2));
process.send({ received: 'args' });
解释
-
主进程 (
master.js
):- 使用
fork('./worker.js', ['arg1', 'arg2'])
创建子进程,并传递两个命令行参数arg1
和arg2
。 - 监听子进程的消息并打印出来。
- 向子进程发送消息
{ hello: 'world' }
。
- 使用
-
子进程 (
worker.js
):- 使用
process.argv.slice(2)
获取传递给子进程的命令行参数。 - 监听主进程的消息并打印出来。
- 向主进程发送消息
{ received: 'args' }
。
- 使用
通过这种方式,你可以将命令行参数从主进程传递到子进程。希望这对你有所帮助!