windows 下使用 taskkill 杀死子进程, 如何找到 pid

2014 年 9 月 7 日
 fullstack0xyz
用node-webkit写的应用,通过chlid_process .spawn执行gulp, gulp 在本地建了文件服务器和livereload服务器,如果只是kill掉这个child_process.spawn 不能终止服务器的进程,查了一下说windows下可以用系统命令 taskkill, 但是如何找到运行服务器的那个进程的pid ?
8240 次点击
所在节点    Node.js
12 条回复
lazycat
2014 年 9 月 7 日
要是进程名确定的话可以直接taskkill /f /im example.exe
ToughGuy
2014 年 9 月 7 日
tasklist | findstr /i process_name

手上没有windows机器... 你先测试下先吧
fullstack0xyz
2014 年 9 月 7 日
@lazycat 进程名是 node.exe, 有好几个呢,不能误杀。。。
halfcrazy
2014 年 9 月 7 日
tasklist可以看pid
另如果是老版本windows可以用ntsd -c q -p pid来关进程
reeco
2014 年 9 月 7 日
任务管理器就能看了
fullstack0xyz
2014 年 9 月 7 日
好像歪楼了,我想问在node程序里怎么杀死子进程。。
roychan
2014 年 9 月 7 日
tasklist
hx1997
2014 年 9 月 7 日
其实 Windows 下没有办法直接查到一个进程的子进程有哪些,因为 Windows 不注重进程间的父子关系。。。一个 workaround 是遍历所有进程,看每一个进程的父进程是否为指定进程,就能得知指定进程的子进程有哪些。

另外,如果你是想杀掉自己的程序生成的所有子进程,可以把生成的第一个子进程放入 Job 对象里,然后杀掉的话结束那个 Job 就好了。

但是系统命令应该都做不到吧。。。
fullstack0xyz
2014 年 9 月 7 日
@hx1997 对进程这些不太了解啊,只是看了下node文档,我在博客里详细描述了问题,求助啦
fullstack0xyz
2014 年 9 月 7 日
fullstack0xyz
2014 年 9 月 7 日
找到一个module可以搞定这个 https://www.npmjs.org/package/tree-kill

不过还是不明白什么原理。。
fullstack0xyz
2014 年 9 月 7 日
看看源码,欠缺底层知识。。

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

https://v2ex.ih06.com/t/132147

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

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

© 2021 V2EX