我有一些我似乎无法修复的代码.它看起来如下: var childProcess = require('child_process');var spawn = childProcess.spawn;child = spawn('./simulator',[]);child.stdout.on('data', function(data){ console.log(data); }); 这都是
var childProcess = require('child_process'); var spawn = childProcess.spawn; child = spawn('./simulator',[]); child.stdout.on('data', function(data){ console.log(data); } );
这都是我运行特定类型模拟的Web应用程序的后端.模拟器可执行程序是运行循环等待传递数据的ac程序(通过其标准输入)当输入进入模拟(即从客户端)时,我解析输入,然后将数据写入子进程stdin如下:
child.stdin.write(INPUTS);
现在回来的数据是40,000字节给或拿.但是数据似乎被分成了8192个字节的块.我已经尝试修复c程序的标准输出缓冲区,但它没有解决它.我想知道node.js强加的’data’事件的大小是否有限制?我需要它作为一个块回来.
缓冲区块大小应用于节点.你在节点之外做的任何事都不能解决问题.如果没有在消息传递协议中做一些额外的工作,就无法从节点获得您想要的内容.任何大于块大小的消息都将被分块.有两种方法可以解决此问题.>如果在开始流出C之前知道总输出大小,则将消息长度预先添加到数据中,以便节点进程知道在终止整个消息之前要提取多少块.>确定可以附加到从C程序发送的消息的特殊字符.当节点看到该字符时,您将结束该消息的输入.