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

回到顶部