产生一个执行命令的新进程
要生成一个需要无缓冲输出的新进程 (例如,长时间运行的进程可能会在一段时间内打印输出而不是立即打印和退出),请使用 child_process.spawn()
。
此方法使用给定命令和参数数组生成新进程。返回值是 ChildProcess
的一个实例,它反过来提供 stdout
和 stderr
属性。这两个流都是 stream.Readable
的实例。
以下代码相当于使用命令 ls -lh /usr
。
const spawn = require('child_process').spawn;
const ls = spawn('ls', ['-lh', '/usr']);
ls.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
});
ls.stderr.on('data', (data) => {
console.log(`stderr: ${data}`);
});
ls.on('close', (code) => {
console.log(`child process exited with code ${code}`);
});
另一个示例命令:
zip -0vr "archive" ./image.png
可能写成:
spawn('zip', ['-0vr', '"archive"', './image.png']);