gpt4 book ai didi

c++ - 从 Web UI 访问 C++ 编译的可执行二进制文件

转载 作者:行者123 更新时间:2023-11-30 04:14:41 28 4
gpt4 key购买 nike

如果我上一个问题不清楚,这次我会更详细、更清楚:

我用 C++ 编写了 Collector 代码并将其编译为可执行二进制文件。该收集器从各种服务器收集数据并将这些数据写入文件。

数据流向我的收集器代码的速度为 10 Gbps,在这种速度下,只有数据写入文件。

现在我被要求从 Web UI 启动这个二进制文件。这意味着单击 Web UI 我的二进制文件应该开始运行。它一直运行到生命周期,直到它的进程从命令行手动终止。

我不是 UI 开发人员,所以请有人可以建议我如何实现这一目标。

我听说过 Node.js,但是使用 node js 我无法运行我的二进制文件。

由于数据以 10 Gbps 的速度流动,因此涉及高 I/O,因此我不能冒这里出现任何缓慢的风险。

最佳答案

使用 在服务器端运行可执行文件就像调用 child_process.spawn() 一样简单.

您可能希望将收集器生成的文件内容推送给客户端,

这可以通过使用 fs.watch 来实现和 Readable Stream s 读取文件。你可以使用 socket.io向客户端广播数据。


更新 这是一个使用 的简单实现.

/**
* app.js
* make sure to install express (npm install express)
* and place the collector executable beside this file
* or set collectorPath to the correct path.
* run the app and open 'http://0.0.0.0:3000/start' in your browser.
*/

var child_process = require('child_process');
var path = require('path');
var express = require('express');
var app = express();

var collector = null;

app.get('/start', function (req, res) {
if (collector !== null) {
res.end('Collector is already running.');
return;
}

var collectorPath = path.join(__dirname, './collector');
collector = child_process.spawn(collectorPath, [], {
stdio: 'ignore'
});

collector.on('exit', function (signal, code) {
console.log('Collector exited with signal: %s and code: %d', signal, code);
collector = null;
});

res.end('Done.');
});

app.listen(3000);
console.log('Listening on port 3000');

关于c++ - 从 Web UI 访问 C++ 编译的可执行二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18780168/

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