首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Cygwin PID转换为Windows PID

将Cygwin PID转换为Windows PID
EN

Stack Overflow用户
提问于 2009-11-05 17:24:26
回答 6查看 4.7K关注 0票数 7

我有一个用Cygwin shell脚本生成的进程,但我不能用kill命令杀死它。即使使用带有-f选项的Cygwin kill,我也会得到这样的消息:

代码语言:javascript
复制
kill: couldn't open pid 1234

我想尝试用PsKill杀死它,但我找不到一种方法来将Cygwin PID转换成PsKill能够理解的Windows PID。我该怎么做呢?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-11-05 17:31:05

你有没有试过运行cygwin kill而不是bash内置?如果是Windows PID,请键入:

代码语言:javascript
复制
/bin/kill -f 1234

或者,如果是Cygwin PID,则键入:

代码语言:javascript
复制
/bin/kill -9 1234

据我所知,还没有可以调用Cygwin的API来将Cygwin PID转换为Windows PID。但是,您可以解析ps -W的输出来进行转换。或者,如果您真的、真的不想这样做,那么可以查看Cygwin ps命令的源代码,看看它们是从哪里获得pids的。Cygwin ps source code is here.。您可以用C语言编写一个小实用程序来获取Cygwin pid,并为您提供Windows pid。

票数 9
EN

Stack Overflow用户

发布于 2009-11-05 17:32:50

除了Cygwin PID之外,ps -W还将显示Windows PID。

或者,您可以像这样以编程方式完成此操作:

代码语言:javascript
复制
#include <sys/cygwin.h>
winpid = cygwin_internal(CW_CYGWIN_PID_TO_WINPID, cygpid);
票数 9
EN

Stack Overflow用户

发布于 2017-07-01 23:45:47

proc file system/proc/$pid/winpid中具有cygwin PID $pid的windows PID。

代码语言:javascript
复制
> notepad&
[1] 11716
> taskkill /f /pid $(</proc/$!/winpid)
ERFOLGREICH: Der Prozess mit PID 11976 wurde beendet.
[1]+  Exit 1                  notepad
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1679337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档