node.js 中子进程传输完毕的end事件
时间: 2023-06-29 14:05:54 浏览: 116
Node.js的进程管理
在Node.js中,当子进程的输出流(stdout)或错误流(stderr)关闭时,会触发`close`事件和`end`事件。在这两个事件中,`close`事件表明流已经关闭,而`end`事件表明流中的数据已经全部读取完毕。
下面是一个简单的示例代码,演示了如何监听子进程的`end`事件:
```javascript
const { spawn } = require('child_process');
const child = spawn('ls', ['-lh', '/usr']);
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}`);
});
child.stdout.on('end', () => {
console.log('stdout stream ended');
});
child.stderr.on('end', () => {
console.log('stderr stream ended');
});
```
在上面的代码中,我们使用`spawn`方法创建了一个`ls -lh /usr`的子进程,并监听了子进程的标准输出流和错误输出流的`data`事件、`close`事件和`end`事件。
当子进程的标准输出流或错误输出流关闭时,会触发相应的`close`事件和`end`事件。在这里,我们只是简单地输出了一条日志,表明流已经结束。
阅读全文