node.js 中子进程如何告诉主进程输出完毕
时间: 2023-07-07 10:05:41 浏览: 58
在 Node.js 中,子进程可以通过 `process.send()` 方法向主进程发送消息。当子进程的输出完成后,可以向主进程发送一个特定的消息,例如 `"done"`,然后在主进程中监听这个消息,以确定子进程已经完成输出。
以下是一个示例代码,演示了如何在子进程输出完成后通知主进程:
**子进程代码:**
```js
const { exec } = require('child_process');
const command = 'ls';
const child = exec(command);
child.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
});
child.stderr.on('data', (data) => {
console.error(`stderr: ${data}`);
});
child.on('close', (code) => {
console.log(`child process exited with code ${code}`);
// 子进程输出完成后,向主进程发送消息
process.send('done');
});
```
**主进程代码:**
```js
const { fork } = require('child_process');
const child = fork('./child.js');
child.on('message', (message) => {
if (message === 'done') {
console.log('Child process has finished outputting');
}
});
```
在主进程中,我们使用 `fork()` 方法来创建一个子进程,并且监听子进程发送的消息。当子进程发送 `"done"` 消息时,主进程打印一条日志,表示子进程已经完成输出。