Javascript 使用节点js关闭.exe文件
我正在使用此节点js代码运行包含无限循环的App.exe文件。我通过App.exe传递输入并获得输出Javascript 使用节点js关闭.exe文件,javascript,node.js,exe,spawn,Javascript,Node.js,Exe,Spawn,我正在使用此节点js代码运行包含无限循环的App.exe文件。我通过App.exe传递输入并获得输出 var bat = null; app.post("/api/run", function(req, res) { if(req.body.success) { if(bat) bat.kill(); } if(!bat) { bat = spawn('cmd.exe', ['/c App.exe']); bat.stder
var bat = null;
app.post("/api/run", function(req, res) {
if(req.body.success) {
if(bat) bat.kill();
}
if(!bat) {
bat = spawn('cmd.exe', ['/c App.exe']);
bat.stderr.on('data', function (data) {
res.end(JSON.stringify({error: true, message: data.toString()}));
});
bat.on('exit', function (code) {
bat = null;
console.log('Child exited with code ' + code);
res.end(JSON.stringify({error: false, message: "Application Closed!"}));
});
}
bat.stdin.write(req.body.input+'\n');
bat.stdout.once('data', function (data) {
console.log(data.toString());
res.end(JSON.stringify({error: false, message: data.toString()}));
});
});
问题是,当我杀死子进程成功时,子进程会被杀死,但App.exe会继续运行。我想知道有没有办法阻止App.exe运行为了杀死node.js中生成的进程,您需要使用
SIGINT
bat.kill('SIGINT');
所有POSIX信号及其作用的列表可在中找到,而不是生成
cmd.exe
生成App.exe
,您可以直接生成后者:
bat = spawn('App.exe');
你不能直接启动
App.exe
,而不是cmd.exe
?我试过了,没用。它杀死了子进程,但app.exe仍在运行。谢谢你的回复