某个wine的软件(有WINEPREFIX),主程序退出后,wineserver和explorer.exe等各程序不退出。
目前只找到
里面的遍历/proc/*/exe和environ这方法似乎可以。
写个看门狗,主程序退出(或僵尸)后kill掉同prefix的进程?
有没有更好的方法?似乎wine运行的程序PGID/SID都不一致。
某个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也不尽相同