节点JS-无法终止使用子流程执行执行的流程

时间:2019-05-07 06:15:24

标签: node.js child-process

我们正试图终止使用节点child_process exec命令启动的Chrome浏览器的进程

var process = cp.exec(`"chrome.exe" --app="..."`, () => {}); // working great

但是当我们尝试

process.kill(); //nothing happens...

该过程是否引用了chrome窗口或其他内容?如果没有,我们如何掌握新打开的Chrome窗口进程,PID等...?

任何帮助都会很棒...

注意-我们已经尝试使用chrome_launcher NPM,但没有帮助,因为我们无法在没有全屏模式的信息亭模式下打开chrome,但这是另一个问题的问题...

2 个答案:

答案 0 :(得分:0)

我无法添加评论,所以我直接在答案中说:

How to kill process with node js

如果您选中上面的链接,则需要以下库

https://www.npmjs.com/package/fkill

取自stackoverflow问题的用法示例

const fkill = require('fkill');

fkill(1337).then(() => {
    console.log('Killed process');
});

fkill('Safari');

fkill([1337, 'Safari']);

我还找到了这个库来检查正在运行的进程

https://github.com/neekey/ps

答案 1 :(得分:0)

尝试PID破解

我们可以使用{detached: true}选项启动子进程,这样这些进程将不会附加到主进程,但会进入新的一组进程。

然后在主进程上使用process.kill(-pid)方法,可以杀死具有相同pid组的子进程的同一组中的所有进程。就我而言,该组中只有一个进程。

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

var child = spawn('your-command', {detached: true});

process.kill(-child.pid);