Node.js 子进程是指通过 Node.js 应用程序生成的独立进程,可以与主进程并行运行,并能相互通信
▥编程
𝄐 0
node创建子进程,node fork子进程,nodejs多进程,node 进程管理,node单进程,nodejs子进程退出
Node.js 子进程是指通过 Node.js 应用程序生成的独立进程,可以与主进程并行运行,并能相互通信。
Node.js 提供了 child_process 模块来创建子进程。该模块提供了几个函数来启动一个新的子进程,并与之交互:
1. spawn():启动一个新的进程,并将其输出连接到主进程的输入,例如:
const { spawn } = require('child_process');
const child = spawn('ls', ['-lh', '/usr']);
child.stdout.on('data', (data) => {
console.log(child stdout:\n${data});
});
child.stderr.on('data', (data) => {
console.error(child stderr:\n${data});
});
child.on('exit', (code, signal) => {
console.log(child process exited with code ${code} and signal ${signal});
});
上述代码会在当前目录下启动一个子进程,并执行 ls -lh /usr 命令,然后将命令输出打印到控制台。
2. exec():启动一个新的 shell 进程,并在其中运行命令,例如:
const { exec } = require('child_process');
exec('cat *.js | wc -l', (err, stdout, stderr) => {
if (err) {
console.error(exec error: ${err});
return;
}
console.log(Number of lines:\n${stdout});
});
上述代码会在当前目录下启动一个子进程,打开一个 shell 并执行 cat *.js | wc -l 命令,然后返回该命令输出的行数。
3. fork():启动一个新的 Node.js 进程,并在其中运行指定的模块,例如:
// parent.js
const { fork } = require('child_process');
const child = fork('child.js');
child.on('message', (msg) => {
console.log(Message from child: ${msg});
});
child.send('Hello, child!');
// child.js
process.on('message', (msg) => {
console.log(Message from parent: ${msg});
});
process.send('Hello, parent!');
上述代码会在当前目录下启动一个子进程,并在其中运行 child.js 模块。父进程与子进程通过 IPC(进程间通信) 通道相互发送消息。
Node.js 子进程是指通过 Node.js 应用程序生成的独立进程,可以与主进程并行运行,并能相互通信。
Node.js 提供了 child_process 模块来创建子进程。该模块提供了几个函数来启动一个新的子进程,并与之交互:
1. spawn():启动一个新的进程,并将其输出连接到主进程的输入,例如:
const { spawn } = require('child_process');
const child = spawn('ls', ['-lh', '/usr']);
child.stdout.on('data', (data) => {
console.log(child stdout:\n${data});
});
child.stderr.on('data', (data) => {
console.error(child stderr:\n${data});
});
child.on('exit', (code, signal) => {
console.log(child process exited with code ${code} and signal ${signal});
});
上述代码会在当前目录下启动一个子进程,并执行 ls -lh /usr 命令,然后将命令输出打印到控制台。
2. exec():启动一个新的 shell 进程,并在其中运行命令,例如:
const { exec } = require('child_process');
exec('cat *.js | wc -l', (err, stdout, stderr) => {
if (err) {
console.error(exec error: ${err});
return;
}
console.log(Number of lines:\n${stdout});
});
上述代码会在当前目录下启动一个子进程,打开一个 shell 并执行 cat *.js | wc -l 命令,然后返回该命令输出的行数。
3. fork():启动一个新的 Node.js 进程,并在其中运行指定的模块,例如:
// parent.js
const { fork } = require('child_process');
const child = fork('child.js');
child.on('message', (msg) => {
console.log(Message from child: ${msg});
});
child.send('Hello, child!');
// child.js
process.on('message', (msg) => {
console.log(Message from parent: ${msg});
});
process.send('Hello, parent!');
上述代码会在当前目录下启动一个子进程,并在其中运行 child.js 模块。父进程与子进程通过 IPC(进程间通信) 通道相互发送消息。
本文地址:
/show-277612.html
版权声明:除非特别标注原创,其它均来自互联网,转载时请以链接形式注明文章出处。