gpt4 book ai didi

javascript - Nodejs无法杀死Node本身执行的外部Windows可执行程序

转载 作者:行者123 更新时间:2023-12-03 10:42:15 25 4
gpt4 key购买 nike

我在本地托管 Node 作为服务器以与硬件交互。

然后,我的 Web 应用程序向 Node 发出请求以执行 2 个可执行文件,无论哪个可执行文件首先返回数据,都会将其响应回我的 Web 应用程序。

这样做会导致另一个可执行文件仍在后台运行,等待硬件响应。

我也无法终止该进程,我必须手动停止 Node 并再次运行它,或者任务终止该可执行文件。

我的代码如下:

Node.JS

var exec = require('child_process').exec;    

app.get('/Page', function (req, res) {
var Page = function () {
var a = exec('F:/Example1.exe', function (err, data) {
console.log(err);
console.log(data);
b.kill();
if (!res.headersSent) {
res.send(data);
}
});
var b = exec('F:/Example2.exe', function (err, data) {
console.log(err);
console.log(data);
a.kill();
if (!res.headersSent) {
res.send(data);
}
});
}
Page();
});

显然,即使使用 kill 命令,我仍然无法终止该进程。

我应该让你们知道,我也在我的前端使用 AngularJS。

我在网上寻找解决方案,但是 Google 的结果都慢慢变成紫色。

非常感谢那些发布解决方案的人,请向我解释一下解决方案的详细信息。我真的很想了解更多。

非常感谢。

最佳答案

exec 的问题是它会等到程序执行完毕后才运行回调。

您可以使用spawn相反,您可以在进程运行时对其进行控制。

 var spawn = require('child_process').spawn;

app.get('/Page', function(req, res) {
var Page = function() {
var a = spawn('F:/Example1.exe');
var b = spawn('F:/Example2.exe');
var aData = '',
bData = '';
a.stdout.on('data', function(data) {
aData += data.toString();
});
b.stdout.on('data', function(data) {
bData += data.toString();
});
a.on('close', function() {
b.kill();
if (!res.headersSent) {
res.send(aData);
}
});
b.on('close', function() {
a.kill();
if (!res.headersSent) {
res.send(bData);
}
});
}
Page();
});

关于javascript - Nodejs无法杀死Node本身执行的外部Windows可执行程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28721171/

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