从命令提示符杀死在 wine 中运行的进程

jgr*_*een 4 java linux wine

(我不是 Linux 或 Wine 专业人士...它们是由 IT 人员设置的...我只是 Java 人员)我正在开发一个在 Linux 上运行的 java 应用程序。它产生几个做同样事情的线程,即产生进程(java.lang.Process),一些Linux,一些Windows通过wine。我的一些线程将在 wine 调用期间无限期地挂起。

因为我有几个线程调用相同的 linux/windows 应用程序,所以我不能只 grep wine 的 ps 输出并杀死它,因为我可以杀死没问题的 wine 进程。

做了一些谷歌搜索,通过反射,我能够从进程中获取 pid,但它与使用 ps 的 Linux pid 不对应,所以我认为它是在 wine 中运行的 pid。

(最后一个问题...)有没有办法杀死在 wine 中运行并引用它的 pid 的进程?

ken*_*orb 5

要终止所有 Wine 进程,请使用wineserver -k(全部在同一 WINEPREFIX 环境中)。

要杀死特定进程(按 列出winedbg --command "info proc"),可以winedbg按以下方式运行:

winedbg然后按如下方式运行:

$ winedbg
Wine-dbg>info proc
 pid      threads  executable (all id:s are in hex)
 0000000d 4        'taskmgr.exe'
 0000000e 4        'services.exe'
 0000001a 3        \_ 'plugplay.exe'
Wine-dbg>attach 13
0x9f68ad05 read$UNIX2003+0x5 in libsystem_kernel.dylib: call    0x9f68b40c _sysenter_trap in libsystem_kernel.dylib
Wine-dbg>kill
Wine-dbg>quit
Run Code Online (Sandbox Code Playgroud)

由于attach接受十进制值,因此您需要将其 pid 从十六进制转换,以下是 Bash shell 中的示例:

echo $(( 0x0000000d ))
Run Code Online (Sandbox Code Playgroud)