Node.js子进程 child_process
node.js child_process 使用:分为同步进程和异步进程文档传送们
创建子进程的方式
- spawn: 启动一个子进程来执行命令;
- exec: 启动一个子进程来执行命令,与 spawn 不同的是,它有一个回调函数获知子进程的状况;
- execFile: 启动一个子进程来执行可执行文件;
- fork: 与 spawn 类似,不同点在于它创建 Node 的子进程只需指定要执行的 JavaScript 文件模块即可;
exec使用
child_process.exec(command[, options][, callback])
引入方式
const { exec } = require('child_process');
使用方式: 以执行curl为例:
exec( `curl -X POST "es-master:9200/_bulk?pretty" -H 'Content-Type: application/json' --data-binary "@1.txt"`, function (err, out, code) { if (err instanceof Error) throw err; console.log(err); console.log(out); }, );
execFile使用
child_process.execFile(file[, args][, options][, callback])
引入方式
const { execFile } = require('child_process');
使用方式: 以执行curl为例:
// node 为文件名 execFile('node', function (err, out, code) { if (err instanceof Error) throw err; console.log(err); console.log(out); }, );
spawn使用
child_process.spawn(command[, args][, options])
引入方式
const { spawn } = require('child_process');
使用方式: 以执行curl为例:
const ls = spawn('ls', ['-lh', '/usr']); ls.stdout.on('data', (data) => { console.log(`stdout: ${data}`); }); ls.stderr.on('data', (data) => { console.error(`stderr: ${data}`); }); ls.on('close', (code) => { console.log(`child process exited with code ${code}`); });