You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何杀死通过child_process.exec启动的Node.js子进程

解决方法

child_process.exec 调用后会返回一个 ChildProcess 实例,你可以直接调用该实例的 kill() 方法终止进程,默认发送 SIGTERM 信号,如果需要模拟 Ctrl+C 的退出效果,指定发送 SIGINT 信号即可。

修改后的示例代码如下:

const notcp = require("child_process");
// 存储exec返回的子进程实例
const childProcess = notcp.exec("./IAmAnAppThatDoesntJustStop.sh", (error, stdout, stderr) => {
  // 原有逻辑不变
});

// 需要终止进程时调用以下代码,SIGINT对应Ctrl+C的信号
childProcess.kill('SIGINT');

注意事项

  • 如果子进程内部又启动了其他子进程(即存在孙子进程),直接杀父进程可能导致下层进程变成孤儿进程继续运行,如需终止整个进程树:
    • Linux/macOS 环境下可以通过杀进程组实现:process.kill(-childProcess.pid, 'SIGINT')
    • Windows 环境下可以调用 taskkill 命令:notcp.exec(taskkill /T /PID ${childProcess.pid} /F)
  • 调用kill后可以通过 childProcess.killed 属性判断是否已经成功触发kill操作。

内容的提问来源于stack exchange,提问作者user11287402

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 06:39:03