【问题标题】:how to shutdown firefox using python如何使用python关闭firefox
【发布时间】:2021-06-04 09:21:31
【问题描述】:

大家好,我在尝试杀死子进程时遇到了一些麻烦。Popen 事实上,我想要的是通过 python 打开一个 tor 窗口,做我的事情,然后关闭 tor 窗口,这是我到目前为止所做的:

subprocess.Popen([r'C:\Users\Myname\Desktop\Tor Browser\Browser\firefox.exe'])

#做我的代码

subprocess.Popen([r'C:\Users\Myname\Desktop\Tor Browser\Browser\firefox.exe']).terminate()

但由于 Tor 窗口在程序结束时仍处于打开状态,因此无法正常工作

注意,如果这样做:

subprocess.Popen([r'C:\Users\Myname\Desktop\Tor Browser\Browser\firefox.exe'])

subprocess.Popen([r'C:\Users\Myname\Desktop\Tor Browser\Browser\firefox.exe']).terminate()

在这两行之间不添加任何代码它可以完美运行,我不知道为什么。 任何人都可以帮助我杀死这个子进程?

【问题讨论】:

  • 如果这仅在创建和终止之间存在代码时失败,您应该提供一个minimal reproducible example,该minimal reproducible example 具有实际上有故障的尽可能短的代码。并确保它足够正确,不会明显被破坏(我不知道您是在真实程序中创建一个新实例并终止新实例,还是仅作为问题的简写,但这是一个关键区别)。
  • 另外,对于一个网络浏览器来说,有更好的方法来杀死它,而不是仅仅发送一个 SIGTERM。看看 Firefox 可用于进程控制、在目标浏览器中运行代码等的命令行参数。
  • 好吧对不起,我只是这个网站的新手,
  • 但是,即使我在 subprocess.Popen 和 subprocess.terminate() 之间放置一个简单的 time.sleep() 浏览器也不会关闭..
  • 这是有道理的。如果您在进程完成连接到内存中浏览器的现有副本之前终止该进程,则会阻止它启动。相反,如果它已经将打开新窗口的指令交给现有副本并兴奋,它已经退出,因此发送 TERM 信号什么也不做。正如我之前所说,这是现代网络浏览器与大多数其他应用程序不同的一种方式。

标签: python subprocess


【解决方案1】:

在我看来,您正在启动两个子流程。你应该试试:

my_process = subprocess.Popen([r'C:\Users\Myname\Desktop\Tor Browser\Browser\firefox.exe'])
# your code
my_process.terminate()

【讨论】:

    猜你喜欢
    • 2010-09-08
    • 1970-01-01
    • 1970-01-01
    • 2014-12-20
    • 1970-01-01
    • 1970-01-01
    • 2020-12-08
    • 2017-12-17
    • 1970-01-01
    相关资源
    最近更新 更多