我有一个用Cygwin shell脚本生成的进程,但我不能用kill命令杀死它。即使使用带有-f选项的Cygwin kill,我也会得到这样的消息:
kill: couldn't open pid 1234我想尝试用PsKill杀死它,但我找不到一种方法来将Cygwin PID转换成PsKill能够理解的Windows PID。我该怎么做呢?
发布于 2009-11-05 17:31:05
你有没有试过运行cygwin kill而不是bash内置?如果是Windows PID,请键入:
/bin/kill -f 1234或者,如果是Cygwin PID,则键入:
/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。
发布于 2009-11-05 17:32:50
除了Cygwin PID之外,ps -W还将显示Windows PID。
或者,您可以像这样以编程方式完成此操作:
#include <sys/cygwin.h>
winpid = cygwin_internal(CW_CYGWIN_PID_TO_WINPID, cygpid);发布于 2017-07-01 23:45:47
proc file system在/proc/$pid/winpid中具有cygwin PID $pid的windows PID。
> notepad&
[1] 11716
> taskkill /f /pid $(</proc/$!/winpid)
ERFOLGREICH: Der Prozess mit PID 11976 wurde beendet.
[1]+ Exit 1 notepadhttps://stackoverflow.com/questions/1679337
复制相似问题