Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用节点js关闭.exe文件_Javascript_Node.js_Exe_Spawn - Fatal编程技术网

Javascript 使用节点js关闭.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

我正在使用此节点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.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仍在运行。谢谢你的回复