我正在使用 Python 的 PSUtil 库来检测给定进程完成的确切时间。目前,我通过查找进程何时终止来做到这一点,以下测试套件在Windows和常规 Linux程序上都运行良好:
# Run a command and keep a reference
if do_run_command:
process = psutil.Popen(command)
# Latch onto running process by PID
else:
process = psutil.Process(int(pid))
# Loop until the process ends
while True:
if not process.is_running():
break
if process.status() == psutil.STATUS_ZOMBIE:
break
try:
# Command that gets information about the process
except psutil.NoSuchProcess:
break
# Store end time
但是,当我尝试在Wine下运行的程序上使用它时,这些测试都不会触发。这是因为Wine 进程似乎从未真正终止,而是无限期地进入睡眠状态。这包括在 Wine 中运行的程序、在 Wine 中启动程序的脚本等。
这导致了无法检测程序何时真正结束以及进程在内存中建立起来直到我最终不得不手动终止它们的问题。
-=-=-=-=-
我在CentOS 6.0上运行。我的主要问题归结为:
- 是否可以为Wine设置某种配置以使其在完成时关闭进程?(我对 Wine 比较陌生,事实证明,寻找这个非常困难)
- 或者,是否可以将另一个PSUtil测试添加到我的 Python 脚本中以检测这些 Wine 进程何时完成(即使它们无限期地休眠)?