下面是“node的process以及child_process模块学习笔记”的完整攻略。
process模块
在Node.js中,process
是一个全局对象,提供了与当前Node.js进程相关的信息和控制。我们可以使用process
对象来获取进程的信息、设置进程的环境变量等。
获取命令行参数
process.argv
属性包含了当前进程的命令行参数。它是一个数组,第一个元素是Node.js执行的bin文件路径,第二个元素是当前执行文件的路径,后面的元素是命令行参数。下面是一个简单的示例:
console.log(process.argv);
运行上面的示例,输出如下:
[
'/usr/local/bin/node',
'/Users/xxx/Desktop/test.js',
'hello',
'world'
]
可以看到,第三个和第四个元素分别是命令行参数hello
和world
。
设置环境变量
process.env
属性是一个对象,包含了当前进程的所有环境变量。我们可以使用process.env
来获取、设置环境变量。下面是一个简单的示例:
process.env.MY_NAME = 'John';
console.log(process.env.MY_NAME);
运行上面的示例,输出如下:
John
可以看到,成功设置了环境变量MY_NAME
。
child_process模块
Node.js的child_process
模块提供了一组API,用于创建子进程并和父进程之间进行通信。
exec
child_process.exec(command[, options][, callback])
函数会开启一个新的子进程,并在子进程中执行指定的命令,并将输出回调给父进程。下面是一个简单的示例:
const { exec } = require('child_process');
exec('ls -la', (error, stdout, stderr) => {
if (error) {
console.error(`exec error: ${error}`);
return;
}
console.log(`stdout: ${stdout}`);
console.error(`stderr: ${stderr}`);
});
上面的例子中,我们通过exec
方法执行了ls -la
命令,并将输出回调给父进程。回调函数的三个参数分别是error
、stdout
和stderr
,分别代表是否发生错误、命令输出和错误输出。
spawn
child_process.spawn(command[, args][, options])
函数会开启一个新的子进程,并在子进程中执行指定的命令。与exec
函数不同的是,exec
函数需要等待命令执行完毕才会回调,而spawn
函数则可以实时监听子进程的输出。下面是一个简单的示例:
const { spawn } = require('child_process');
const child = spawn('ls', ['-la']);
child.stdout.on('data', (chunk) => {
console.log(`stdout: ${chunk.toString()}`);
});
child.stderr.on('data', (chunk) => {
console.error(`stderr: ${chunk.toString()}`);
});
child.on('error', (error) => {
console.error(`error: ${error}`);
});
child.on('close', (code) => {
console.log(`child process exited with code ${code}`);
});
上面的例子中,我们通过spawn
方法执行了ls -la
命令,并实时监听子进程的输出。stdout.on
和stderr.on
方法是绑定在子进程的标准输出和标准错误输出上,当有输出时会触发回调函数。on('error')
方法和on('close')
方法分别是绑定在子进程错误和关闭事件上。
以上就是对“node的process以及child_process模块学习笔记”的完整攻略。如果还有其它问题或需要更多的说明,请随时提出。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:node的process以及child_process模块学习笔记 - Python技术站