当我们需要在NodeJS中执行一些系统命令时,可以使用NodeJS提供的子进程模块(child_process)。下面,我将演示如何使用这个模块来调用系统命令的方法。
调用系统命令的方法
使用child_process模块调用系统命令分为三种方法:spawn/exec/execFile。
spawn方法
spawn方法是一种处理较大数据量命令的方法,它启动一个子进程来执行命令,该方法接收三个参数:command(命令), args(参数数组), options(可选配置项)。下面是使用spawn方法的示例代码:
const { spawn } = require('child_process');
const ls = spawn('ls', ['-lh', '/usr']);
ls.stdout.on('data', (data) => {
console.log(`输出:${data}`);
});
ls.stderr.on('data', (data) => {
console.error(`错误:${data}`);
});
ls.on('close', (code) => {
console.log(`子进程退出码:${code}`);
});
上面的代码执行了ls -lh /usr
命令并打印输出和错误信息,同时打印子进程的退出码。
exec方法
exec方法是一种处理简单数据量命令的方法,它启动一个shell来执行命令,该方法接收三个参数:command(命令), options(可选配置项), callback(回调函数)。下面是使用exec方法的示例代码:
const { exec } = require('child_process');
exec('ls -lh /usr', (err, stdout, stderr) => {
if (err) {
console.error(`错误:${err}`);
return;
}
console.log(`输出:${stdout}`);
console.error(`错误:${stderr}`);
});
上面的代码执行了ls -lh /usr
命令并打印输出和错误信息,同时处理了错误的回调函数。
execFile方法
execFile方法是一种处理简单数据量命令且无需使用shell的方法,该方法接收四个参数:file(命令), args(参数数组), options(可选配置项), callback(回调函数)。下面是使用execFile方法的示例代码:
const { execFile } = require('child_process');
const child = execFile('node', ['--version'], (error, stdout, stderr) => {
if (error) {
throw error;
}
console.log(stdout);
});
console.log('程序执行完毕!');
上面的代码执行了node --version
命令并打印版本信息,同时打印出“程序执行完毕!”字样。
示例说明
- 调用系统命令创建文件夹
const { exec } = require('child_process');
exec('mkdir testfolder', (err, stdout, stderr) => {
if (err) {
console.error(`执行出错: ${err}`);
return;
}
console.log(`执行成功: ${stdout}`);
});
上述代码中的“mkdir testfolder”为创建文件夹的命令,借助exec()方法生成新的子进程执行该命令,并在回调函数中处理输出结果和错误信息。
- 使用spawn方法运行Python脚本
const { spawn } = require('child_process');
const py = spawn('python', ['script.py']);
py.stdout.on('data', (data) => {
console.log(`输出:${data}`);
});
py.stderr.on('data', (data) => {
console.error(`错误:${data}`);
});
py.on('close', (code) => {
console.log(`子进程退出码:${code}`);
});
上述代码中,'python'代表Python环境的执行命令,'script.py'为要执行的Python脚本名称,通过spawn()方法开启新的Python子进程,并监听其输出和错误信息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:利用NodeJS的子进程(child_process)调用系统命令的方法分享 - Python技术站