【发布时间】:2020-12-24 21:17:57
【问题描述】:
我有一个 NodeJS 子进程,它在调用时会计算一个唯一的 pid(由 redis 使用)
我和控制台记录它(例如:console.log('PID: ' + pid))
在父母中我打电话给spawn(command, arg, {stdio: ['pipe', 'pipe', 'pipe'], detached: true})
我尝试过的一些事情:
- 关闭子进程 stdout 并将其传递给一个函数(返回一个承诺),然后
return new Promise((resolve, reject) => {
inputStream.on('data', (i) => {
const isPidString = RegExp('/^PID:.+/g').test(i.toString('utf8'))
console.log('isPidString', isPidString)
if (isPidString) {
console.log('found string')
console.log('i', i.toString())
const pidValue = parseInt(i.toString('utf8').split(': ')[1])
console.log('pidVal', pidValue)
inputStream.destroy()
resolve(pidValue)
}
})
setTimeout(() => {
reject()
}, 5000);
});
不知何故,它不起作用。我的问题是:我如何只为我关心的一个特定的 console.log() 收听一个流(那将不间断地运行)。
【问题讨论】:
标签: node.js child-process node-streams