Node.js 产生一个shell来执行命令
示例
要在需要缓冲输出(即不是流)的shell中运行命令,请使用child_process.exec。例如,如果您想运行cat *.js file | wc -l不带任何选项的命令,则如下所示:
const exec = require('child_process').exec;exec('cat *.js file | wc -l', (err, stdout, stderr) => {
if (err) {
console.error(`exec error: ${err}`);
return;
}
console.log(`stdout: ${stdout}`);
console.log(`stderr: ${stderr}`);
});
该函数最多接受三个参数:
child_process.exec(command[, options][, callback]);
command参数是一个字符串,是必需的,而options对象和callback都是可选的。如果未指定选项对象,则将exec以下内容用作默认值:
{encoding: 'utf8',
timeout: 0,
maxBuffer: 200*1024,
killSignal: 'SIGTERM',
cwd: null,
env: null
}
options对象还支持一个shell参数(/bin/sh在UNIX和cmd.exeWindows上默认uid为该参数),一个用于设置进程的用户标识的gid选项以及一个用于组标识的选项。
使用三个参数调用该回调,该回调在命令执行完成时调用(err, stdout, stderr)。如果命令成功执行,err将是null,否则将是的一个实例Error,它err.code是该进程的退出代码,并且err.signal是为终止该进程而发送的信号。
的stdout和stderr参数是命令的输出。它使用options对象中指定的编码解码(默认值:)string,但是可以作为Buffer对象返回。
还存在的同步版本exec,即execSync。同步版本不接受回调,stdout而是返回而不是的实例ChildProcess。如果同步版本遇到错误,它会引发和终止程序。看起来像这样:
const execSync = require('child_process').execSync;const stdout = execSync('cat *.js file | wc -l');
console.log(`stdout: ${stdout}`);
以上是 Node.js 产生一个shell来执行命令 的全部内容, 来源链接: utcz.com/z/340647.html