nodejs几种创建子进程的区别
- 2020 年 1 月 14 日
- 筆記
spawn()
启动一个子进程来执行命令。进程类型任意
const { spawn } = require('child_process'); 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(`子进程退出码:${code}`); });
exec()
启动一个子进程来执行命令,但可以有一个回调函数获取子进程的一些情况。可以设置超时时间。进程类型任意
// 就像平时使用命令行那样 const { exec } = require('child_process'); exec('cat *.js bad_file | wc -l', (error, stdout, stderr) => { if (error) { console.error(`exec error: ${error}`); return; } console.log(`stdout: ${stdout}`); console.log(`stderr: ${stderr}`); });
execFile()
启动一个子进程来执行可执行文件,可以设置超时时间,进程类型任意
const { execFile } = require('child_process'); const child = execFile('node', ['--version'], (error, stdout, stderr) => { if (error) { throw error; } console.log(stdout); });
fork()
直接fork js文件。进程类型node
node文档的一些说明
