在Node.js中,child_process
模块提供了创建子进程的API。你可以使用child_process
模块中的spawn
, exec
, execFile
或 fork
函数来创建子进程。
以下是使用child_process
模块的几种方法的示例代码:
- 使用
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.error(`stderr: ${data}`);
});
ls.on('close', (code) => {
console.log(`子进程退出码:${code}`);
});
- 使用
exec
方法:
const { exec } = require('child_process');
exec('ls -lh /usr', (error, stdout, stderr) => {
if (error) {
console.error(`执行的错误: ${error}`);
return;
}
console.log(`stdout: ${stdout}`);
console.error(`stderr: ${stderr}`);
});
- 使用
execFile
方法:
const { execFile } = require('child_process');
execFile('ls', ['-lh', '/usr'], (error, stdout, stderr) => {
if (error) {
console.error(`执行的错误: ${error}`);
return;
}
console.log(`stdout: ${stdout}`);
console.error(`stderr: ${stderr}`);
});
- 使用
fork
方法来运行一个Node.js脚本:
const { fork } = require('child_process');
const child = fork('./subprocess.js');
child.on('message', (msg) => {
console.log('父进程收到消息:', msg);
});
child.send({ hello: 'world' });
在fork
的例子中,假设subprocess.js
是一个简单的Node.js脚本,它可能看起来像这样:
process.on('message', (msg) => {
console.log('子进程收到消息:', msg);
process.send({ goodbye: 'world' });
});
这些示例展示了如何使用child_process
模块来创建和管理子进程。根据你的具体需求,你可以选择适合的方法来创建子进程。