4

(私は Linux や Wine のプロではありません... IT 担当者によって設定されました... 私はただの Java 担当者です) Linux で動作する Java アプリケーションに取り組んでいます。同じことを行ういくつかのスレッドを生成します。つまり、生成プロセス (java.lang.Process)、一部の Linux、一部の Windows を wine で生成します。私のスレッドのいくつかは、ワインの呼び出し中に無期限にハングします。

同じ linux/windows アプリを呼び出す複数のスレッドがあるため、正常な wine プロセスを強制終了できるため、wine の ps 出力を grep してそれを強制終了することはできません。

グーグルで調べたところ、リフレクションを通じてプロセスからpidを取得できましたが、psを使用したLinux pidに対応していないため、ワインで実行されているpidだと思います。

(最後に質問...) pid を参照してワインで実行されているプロセスを強制終了する方法はありますか?

4

4 に答える 4

3

Wine には、少なくとも最近のバージョンでは、独自のtaskmgrtaskkillが付属しており、Windows の同名のプログラムに似ています。

于 2011-01-06T00:06:03.177 に答える
2

すべての Wine プロセスを強制終了するには、wineserver -k(all within the same WINEPREFIX environment) を使用します。

特定のプロセスを強制終了するには (list by )、次の方法で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

10 進数値を受け入れるためattach、pid を 16 進数から変換する必要があります。Bash シェルの例を次に示します。

echo $(( 0x0000000d ))
于 2016-12-19T18:07:29.627 に答える
0

PID が関心のある Wine プロセスの ID である場合kill -3 PID、そのプロセスを起動したコンソールに JVM スレッド ダンプが表示されます。このダンプには、スレッドの現在の状態のリストとnid、 の出力の SPID フィールドに等しいフィールドが含まれますps -ef -T

于 2010-12-29T19:11:51.000 に答える
0

イライラする場合は、Windows タスク マネージャーを試してください。ワインのプロセスをネイティブとして見ることができるはずです。(もちろん、他のものはまったく表示されないため、合計が 100% になることはありません)。

于 2010-12-29T19:37:20.337 に答える