有没有一种方法可以杀死一个使用exec启动的子进程?信不信由你,并不是所有的应用程序都只是 * 结束 *(比如ls),但会继续,除非你使用control-c快捷方式退出它们。有没有一种方法可以通过代码来复制它。我想扼杀这个过程。下面是一些初始化进程的代码,如果这有帮助的话。
const notcp = require("child_process");
notcp.exec("./IAmAnAppThatDoesntJustStop.sh", (error, stdout, stderr) => {
//
});
2条答案
按热度按时间5f0d552i1#
如果你执意要使用
.exec()
来执行你的脚本,那么没有no (easy) built-in的方法来结束你刚刚启动的进程。如果您比较灵活,可以使用.spawn()
函数,情况会发生变化,您可以 checkout the following question/answer on Stackoverflow。如果您仍然想使用
.exec()
,可以尝试使用Taskkill或Fkill等库来简化实现此类功能的复杂性?0tdrvxhp2#
对我来说,杀死
.exec()
子进程唯一有效的方法是在尝试使用kill的每一个信号都不起作用后使用npm库terminate
。但是terminate
做到了。具体操作如下:其中
myProcess
简单地是:const myProcess = childProcess.exec(...)
。您不需要在子进程上使用{ detached: true }
,这不是必要的。您可以使用以下命令安装terminate:
yarn add terminate
(这不是我的项目)这一招非常有效。