nodejs 进程间通讯
时间: 2024-08-12 15:04:08 浏览: 83
在Node.js中,进程间通信(IPC,Inter-Process Communication)主要通过以下几个方式来实现,其中stream方式是一种常见的手段:
1. **Stream方式**[^1]: 使用`child_process`模块的`spawn`方法创建子进程时,可以利用`stdin`, `stdout`, 和 `stderr`属性作为流来进行双向通信。例如,父进程可以通过`child.stdin.write()`向子进程发送数据,而子进程则可以从`child.stdout.on('data')`事件中读取数据。
```javascript
const { spawn } = require('child_process');
const child = spawn('my_command', [], {
stdio: ['pipe', 'pipe', 'pipe']
});
// 父进程写入数据
child.stdin.write('Hello from parent!\n');
// 子进程监听输出
child.stdout.on('data', (data) => {
console.log(`Received data from child: ${data}`);
});
```
2. **消息队列**: 可以使用`process.send()`和`process.on('message')`来实现简单的消息传递,适用于父子进程间的一对一交互。
```javascript
child.on('message', (msg) => {
console.log(`Parent received message: ${msg}`);
});
child.send('Hello from parent!');
```
3. **事件监听**: 对于更复杂的应用场景,可以考虑使用`cluster`模块创建多个工作进程,每个进程有自己的事件循环,它们之间可以通过事件总线进行通信。
关于Node.js名字的由来[^2],它起源于JavaScript运行在一个服务器端环境(Node),并且通过事件驱动的方式处理大量并发连接(即节点网络)。这些特性使得Node.js非常适合构建高性能的网络应用和服务。
阅读全文