node.js - 如何在 Node.js 中收听分离的未引用生成的子进程的标准输出?
问题描述
示例1:子进程确实分离,脚本立即退出
const cp = require('child_process');
const bash = cp.spawn('/bin/bash', ['-c', 'sleep 1 && echo Hello && sleep 3'], {
stdio: 'ignore',
detached: true,
});
bash.unref();
示例 2:我们没有忽略stdio
,但现在子进程并没有真正分离,因为我们等待了 4 秒。
const cp = require('child_process');
const bash = cp.spawn('/bin/bash', ['-c', 'sleep 1 && echo Hello && sleep 3'], {
detached: true,
});
bash.stdout.on('data', (e) => {
if (e.toString('utf8').trim() === 'Hello') {
console.log('Got message, can unsubscribe now');
bash.unref();
}
});
Node.js 中是否有一些有效的方法来实现示例 1 中的行为和示例 2 中的逻辑(监听生成的进程的标准输出)?
解决方案
推荐阅读
- scheme - SICP/Scheme 中的 apply 函数
- flutter - 来自 API 的 ListView 中的 Janks?
- javascript - ASP.NET
- graphql - 在 Apollo Server (apollo-server) 上使用 executeOperation 获取标头以进行集成测试
- google-cloud-platform - 如何在 GCP 中创建组织级别的用户政策
- excel - 在 Microsoft excel 中同时为多个单元格添加/插入文本框
- gemfire - Apache geode gemfire 脉冲
- python - Python,Google 风格的文档字符串:将参数或返回类型定义为另一种类型的子类?
- mysql - 首次创建表时创建表之间的关系
- google-apps-script - Gmail 中的操作添加触发器以显示特定消息