想解决wine退出不彻底的问题,只能写个看门狗?

某个wine的软件(有WINEPREFIX),主程序退出后,wineserver和explorer.exe等各程序不退出。

目前只找到


里面的遍历/proc/*/exe和environ这方法似乎可以。
写个看门狗,主程序退出(或僵尸)后kill掉同prefix的进程?

有没有更好的方法?似乎wine运行的程序PGID/SID都不一致。

因为 wine 程序都是 wineserver 的子进程,你可以用 ptree 来看一下。你杀子进程父进程肯定还在。

所以 wine 官方推荐都是用 wineserver -k。

不过这样一个 watchdog 也没什么难的,可以做个 interval 在十分钟左右的就够用。

并不是wineserver的子进程

$ ps axfj
    1 20753 20753 20753 ?           -1 Ss    1000   0:04 /usr/bin/wineserver
    1 20759 20759 20759 ?           -1 Ssl   1000   0:00 C:\windows\system32\services.exe
    1 20764 20759 20759 ?           -1 Sl    1000   0:00 C:\windows\system32\plugplay.exe
    1 20771 20759 20759 ?           -1 Sl    1000   0:01 C:\Program Files\Common Files\Tencent\QQProtect\Bin\QQProtect.exe
    1 20773 20773 20773 ?           -1 Ssl   1000   0:00 C:\windows\system32\explorer.exe /desktop
    1 20789  3929  3929 ?           -1 Sl    1000   0:05 c:\Program Files\Tencent\QQLite\Bin\QQ.exe
    1 20820  3929  3929 ?           -1 SLl   1000   0:01 c:\Program Files\Tencent\QQLite\Bin\QQ.exe /hosthwnd=65678 /hostname=QQ_IPC_{8xxx} /memoryid=0 c:\Program Files\Tencent\QQLite\Bin\QQ.exe
    1 20830  3929  3929 ?           -1 Sl    1000   0:11 c:\Program Files\Tencent\QQLite\Bin\QQApp.exe app=c:\Program Files\Tencent\QQLite\Misc\QQApp\com.tencent.banner.app storage=C:\users\user\Application Data\Tencent\QQ\Misc\QQApp" destipc=GFRichControl_44 sid=16777216 groupid=0

全是pid 1的子进程。PGID和SID也不尽相同