gpt4 book ai didi

node.js - childprocess.stdout.on ('data',回调)未触发

转载 作者:搜寻专家 更新时间:2023-11-01 00:09:06 26 4
gpt4 key购买 nike

我正在 try catch 子进程的输出并通过 websocket 发送它,但我在捕获 on.(data, callback) 事件时遇到了问题。

var subscriberProc = spawn('./stdoutsub', 
['mytopic', '--clientid', 'node-dispatcher'],
{cwd: '/Users/oskar/projects/others/rsmb_1/mac/'});

subscriberProc.stdout.on('data', function(data) {
console.log('-> "' + data + '"');
wsServer.send(data);
});

如果我更改为以下内容,stdoutsub 进程将使用预期数据打印到 Node 进程 stdout。

var subscriberProc = spawn('./stdoutsub', 
['mytopic', '--clientid', 'node-dispatcher'],
{cwd: '/Users/oskar/projects/others/rsmb_1/mac/',
stdio: 'inherit'});

我在 OSX 上运行 Node 版本 0.8.1。

我在这里遗漏了什么吗?

最佳答案

我遇到了类似的问题(在某些情况下我丢失了输出)并得出结论,在我有机会开始监听之前,生成的进程正在喷出输出。

我使用类似于 Node.js 文档中的以下代码解决了这个问题:

var fs = require('fs'),
spawn = require('child_process').spawn,
out = fs.openSync('./out.log', 'a'),
err = fs.openSync('./out.log', 'a');

var child = spawn('prg', [], {
detached: true,
stdio: [ 'ignore', out, err ]
});

然后我读了 out.log,到目前为止一切顺利。

关于node.js - childprocess.stdout.on ('data',回调)未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11269397/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com