我有一些代码似乎无法修复。它看起来如下:
var childProcess = require('child_process');
var spawn = childProcess.spawn;
child = spawn('./simulator',[]);
child.stdout.on('data',
function(data){
console.log(data);
}
);
Run Code Online (Sandbox Code Playgroud)
这一切都在我的 Web 应用程序的后端,该应用程序正在运行特定类型的模拟。模拟器可执行文件是 ac 程序,它运行一个循环,等待传递数据(通过其标准输入)。当输入用于模拟时(即来自客户端),我解析输入,然后将数据写入子进程 stdin如下:
child.stdin.write(INPUTS);
Run Code Online (Sandbox Code Playgroud)
现在返回的数据是 40,000 字节。但数据似乎被分成 8192 字节的块。我尝试修复 c 程序的标准输出缓冲区,但没有修复它。我想知道node.js 施加的“数据”事件的大小是否有限制?我需要它作为一大块回来。
缓冲区块大小应用于节点中。您在节点之外执行的任何操作都无法解决问题。如果不在消息传递协议中进行一些额外的工作,就无法从节点获得您想要的东西。任何大于块大小的消息都将被分块。有两种方法可以处理这个问题。
如果您在 Web 应用程序中处理 IO,您确实希望坚持使用异步方法。您需要类似以下内容(未经测试)。文档Stream中有一个关于如何使用 API 的很好的示例
var data = '';
child.stdout.on('data',
function(chunk){
data += chunk;
}
);
child.stdout.on('end',
function(){
// do something with var data
}
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5881 次 |
| 最近记录: |