node.js中子进程pipe传值的时候,主进程接收参数会重复
时间: 2023-06-29 18:06:31 浏览: 59
这可能是因为你在子进程中输出了一些信息,导致主进程接收到了重复的数据。在子进程中调用`console.log()`或者其他输出函数会将数据输出到标准输出流(stdout),而这个流也会被`pipe()`函数传输到主进程中。
为了避免这个问题,你可以在子进程中使用`process.send()`函数将数据发送到主进程。这样就可以避免输出流的干扰,确保主进程只接收到需要的数据。
以下是一个示例代码:
主进程:
```
const { spawn } = require('child_process');
const child = spawn('node', ['child.js']);
child.stdout.pipe(process.stdout);
child.on('message', (data) => {
console.log(`Received data from child: ${data}`);
});
child.send('Hello from parent!');
```
子进程:
```
process.on('message', (data) => {
console.log(`Received data from parent: ${data}`);
process.send('Hello from child!');
});
```
在这个示例中,主进程使用`child.send()`函数向子进程发送数据,子进程使用`process.send()`函数向主进程发送数据。这样就可以避免输出流的干扰,确保主进程只接收到需要的数据。
阅读全文