[NodeJS] 请教如何 kill 子进程

2021-01-12 14:48:19 +08:00
 974879409

环境: win10 => CMD => node main.js

main.js:
	const { exec } = require('child_process')
    const child = exec(一些 CMD:如 git 批处理 /执行其他 node 脚本,子进程回调)
	global[child.pid] = child
    
    setTimeout(()=> child.kill(), 1000)
    

问题:
某些情况下(如 git merge 存在冲突, 其他 node 脚本业务特定异常)
这些情况会执行 child.kill()
且发现 child 的 exit 事件会被触发
且发现 child 的 killed 是 true
但是,如 git 批处理依然会继续执行, node 脚本也未被中断退出

	请问这该怎么处理
688 次点击
所在节点    问与答
1 条回复
ysc3839
2021-01-12 16:17:12 +08:00
你是想实现把子进程的子进程也给结束掉吗?这种情况应该使用操作系统提供的相关机制,Windows 下是用 Job Object 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/744189

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX