【问题标题】:Open a process with Popen and kill after a time用 Popen 打开一个进程并在一段时间后终止
【发布时间】:2015-10-02 14:07:03
【问题描述】:

我想在 5 分钟后杀死一个进程(例如),我已经用它打开了

subprocess.Popen()
p = subprocess.Popen('calc.exe', shell=True)  # example

我用print(p.pid) 打印了pip,用time.sleep(10) 睡了10 秒,然后用p.kill() 终止了进程。

问题是calc.exe 仍在运行。我已经使用Process Explorer 来查看这里发生了什么,似乎子进程将使用 pid = p.pid 创建一个 cmd,它创建 calc.exe,但使用另一个我不知道的 pid。

这里的所有代码:

import subprocess, os, time

p = subprocess.Popen('calc.exe', shell=True)

time.sleep(1)
print(p.pid)
p.kill()

那么我做错了什么?

谢谢!

【问题讨论】:

    标签: python windows subprocess


    【解决方案1】:

    p.kill() 正在杀死您使用shell=True 选项生成的cmd.exe 进程Popen。这个过程就是p.pid 所指的。从您的 Popen 语句中删除 shell=True,它会像您期望的那样杀死 calc.exe

    【讨论】:

      【解决方案2】:

      我没有运行程序,但它会工作::

      import subprocess
      import time
      p = subprocess.Popen(
      ['calc.exe'], stdin=subprocess.PIPE)
      p.communicate()
      
      time.sleep(1)
      print (p.pid)
      p.kill()
      

      如果成功请告诉我...

      【讨论】:

        猜你喜欢
        • 2017-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多