NodeJS -无法终止使用子进程Exec执行的进程

2ic8powd  于 2023-01-30  发布在  Node.js
关注(0)|答案(3)|浏览(485)

我们正在尝试终止使用nodes child_process exec命令启动的chrome浏览器的进程

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

但当我们尝试

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

进程是否引用chrome窗口或其他内容?如果不是,我们如何获取新打开的chrome窗口进程、PID等?
任何帮助都很好...
注意-我们已经尝试使用chrome_launcher NPM,但它没有帮助,因为我们无法在kiosk模式下打开chrome,但这是一个不同的问题...

chy5wohz

chy5wohz1#

尝试PID黑客
我们可以使用{detached: true}选项启动子进程,这样这些进程就不会被附加到主进程,而是转到一组新的进程。
然后在主进程上使用process.kill(-pid)方法,我们可以杀死所有在同一个pid组的子进程组中的进程,在我的例子中,我在这个组中只有一个进程。

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

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

process.kill(-child.pid);
qfe3c7zg

qfe3c7zg2#

我构建了一个跨平台的npm包,它包含了从节点生成和杀死子进程,给予看吧。
https://www.npmjs.com/package/subspawn

fhity93d

fhity93d3#

我无法补充评论,所以我直接在回答中说:
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

相关问题