Jaz*_*azz 7 shell cygwin sysinternals
我有一个使用Cygwin shell脚本生成的进程,我无法使用该kill命令将其杀死.即使在Cygwin的杀与-f选择,我得到这个消息:
kill: couldn't open pid 1234
Run Code Online (Sandbox Code Playgroud)
我想尝试要杀死它PsKill,但我不能找到一种方法来转换Cygwin PID到Windows PID那个PsKill就明白了.我怎样才能做到这一点?
Mic*_*lon 10
您是否尝试过运行cygwin kill而不是bash内置?如果是Windows PID,则键入:
/bin/kill -f 1234
Run Code Online (Sandbox Code Playgroud)
或者如果它是Cygwin PID,则键入:
/bin/kill -9 1234
Run Code Online (Sandbox Code Playgroud)
据我所知,Cygwin没有API可以调用将Cygwin PID转换为Windows PID.但是,您可以解析输出ps -W以进行转换.或者,如果你真的,真的不想这样做,那么看一下Cygwin ps命令的源代码,看看他们从哪里得到pids.Cygwin ps源代码在这里..您可以在C中编写一个小实用程序来获取Cygwin pid并为您提供Windows pid.
ps -W 除了Cygwin PID之外,还会显示Windows PID.
或者,您可以这样编程:
#include <sys/cygwin.h>
winpid = cygwin_internal(CW_CYGWIN_PID_TO_WINPID, cygpid);
Run Code Online (Sandbox Code Playgroud)
该proc文件系统有cygwin的PID $ PID在Windows PID /proc/$pid/winpid。
> notepad&
[1] 11716
> taskkill /f /pid $(</proc/$!/winpid)
ERFOLGREICH: Der Prozess mit PID 11976 wurde beendet.
[1]+ Exit 1 notepad
Run Code Online (Sandbox Code Playgroud)