(我不是一个Linux或葡萄酒专业人员…他们是由一个IT人员build立的……我只是一个Java人)我正在开发一个运行在Linux上的Java应用程序。 它产生了几个线程,做同样的事情,即产卵进程(java.lang.Process),一些Linux,通过葡萄酒一些Windows。 我的一些线程将在葡萄酒调用期间无限期地挂起。
因为我有几个线程去调用相同的Linux / Windows应用程序,我不能只是grep的酒输出ps和杀死,因为我可以杀死葡萄酒进程是好的。
有一些使用Googlesearch,通过反思,我能够从过程中获得pid,但它不符合使用ps的Linux pid,所以我认为这是一个在酒中运行的pid。
(最后的问题…)有没有办法杀死一个进程在葡萄酒引用它的PID?
如何从Linux上的Python调用Wine的DLL?
双向嗅探/窥探ALSA MIDI系统交换
是否有可能在Linux中开发DirectX应用程序?
系统函数调用asynchronous?
如何在Wine下运行msi文件
Wine是否可以使用Simulink Real-Time C API?
在Wine中构buildMSI
将COM对象暴露给在Wine / Linux中运行的应用程序
在Ubuntu上无法看到在Unity 5上运行wine的文本
bash输出到文件
至少在最近的版本中,Wine自带有taskmgr和taskkill ,类似于Windows上同名的程序。
要杀死所有的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
由于attach接受一个十进制值,所以你需要把它的pid从十六进制转换成以下例子在Bash shell中:
echo $(( 0x0000000d ))
当你kill -3 PID ,其中PID是你感兴趣的Wine进程id时,你将在启动该进程的控制台上获得JVM线程转储。 该转储将包含具有其当前状态的线程列表,并且将包含等于ps -ef -T输出中的SPID字段的nid字段。
如果您太沮丧,请尝试使用Windows任务管理器。 它应该能够看到葡萄酒过程是原生的。 (当然不会看到别人,所以总数不会达到100%)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。