subprocess.Popen执行程序以及关闭进程

这篇具有很好参考价值的文章主要介绍了subprocess.Popen执行程序以及关闭进程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

python中有一个很好用的方式来开启进程,即subprocess.Popen

正常来说,如果subprocess.Popen要执行的脚本是一个死循环的脚本,那么我们就需要手动的来关闭这个脚本,而无法等待这个脚本自己结束。

但是这个subprocess.Popen在关闭脚本进程时有一个坑。

举例说明:

python cmd= “python demo.py”
Popen = subprocess.Popen(logcmd, stdout = subprocess.PIPE, shell=True)

用上面的方法来执行python demo.py,它的实际原理是另外开启一个cmd命令来运行python demo.py的命令,即使后面用popen.terminate()也只能关闭cmd的命令,cmd命令被kill掉后,python demo.py的线程由系统来托管,杀死不了python demo.py的进程,从而导致python demo.py不能退出.

正确的开启和关闭方法:

(1)开启方式:

import subprocess,os
import signal

cmd = "python demo.py"
proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, bufsize=-1,preexec_fn=os.setsid)

备注:preexec_fn=os.setsid一定要写上

(2)关闭方式:文章来源地址https://www.toymoban.com/news/detail-644439.html

proc.terminate()
proc.wait()
os.killpg(proc.pid, signal.SIGTERM) 
print("程序已关闭")

到了这里,关于subprocess.Popen执行程序以及关闭进程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • chatgpt赋能python:Python的Popen介绍及使用方法

    在Python编程中,我们经常需要执行外部命令并获取结果。而Python中的Popen函数就是一个方便的工具,可以启动另一个进程并与之交互。在本文中,我们将介绍Popen的基础知识以及使用方法。 Popen是Python的subprocess模块提供的一个函数,可以启动一个新进程并与之交互。它的基本

    2024年02月10日
    浏览(49)
  • Python3 os.makedev() 方法、Python3 os.popen() 方法

    概述 os.makedev() 方法用于以major和minor设备号组成一个原始设备号。 语法 makedev() 方法语法格式如下: 参数 major  -- Major 设备号。 minor  -- inor 设备号。 返回值 返回设备号。 实例 以下实例演示了 makedev() 方法的使用: 执行以上程序输出结果为: 概述 os.popen() 方法用于从一个

    2023年04月09日
    浏览(46)
  • C语言 工具型API -----------popen()

            这段代码是用shell命令查找指定目录下的图片文件,并将其复制到指定目录下。 以下还一段百度的代码可供参考阅读。                                                POPEN(3) NAME        popen, pclose - pipe stream to or from a process SYNOPSIS        #include stdio.h FILE

    2024年02月12日
    浏览(30)
  • 浅聊一下system()函数与popen()函数

    system()函数先fork一个子进程,在这个子进程中调用/bin/sh -c来执行command指定的命令。/bin/sh在系统中一般是个软链接,指向dash或者bash等常用的shell,-c选项是告诉shell从字符串command中读取要执行的命令。父进程则调用waitpid()函数来为变成僵尸的子进程收尸,获得其结束状态,然

    2024年02月10日
    浏览(38)
  • subprocess—Python多进程模块

    这篇文章介绍并行运算中的subprocess模块,subprocess 模块允许我们启动一个新进程,并连接到它们的输入/输出/错误管道,从而获取返回值。 subprocess 它可以用来调用第三方工具(例如:exe、另一个python文件、命令行工具) subprocess 模块首先推荐使用的是它的 run 方法,更高级的

    2024年02月11日
    浏览(38)
  • python利用subprocess执行交互命令

    已经知道,os.system可以方便的利用python代码执行一些像ping、ipconfig之类的系统命令,但却只能得到命令执行是否成功,不能获得命令成功执行后的结果,像下面这样: 在上面的代码中,利用os.system执行“ping www.baidu.com”并把结果赋值给s,但在下面可以看到,s的内容是int类型

    2024年02月16日
    浏览(38)
  • Python+Selenium程序执行完,浏览器自动关闭问题

    最近在学Selenium的时候遇到一个问题,当我 执行完程序,浏览器自动关闭了 ,我在程序中也没有写driver.quit()方法,代码如下: 后面发现是因为我把driver = webdriver.Chrome(r’d:chromedriver.exe’)放在了函数内部,在函数执行完毕之后,程序内所有的步骤都结束了,关于这段程序的

    2024年02月11日
    浏览(59)
  • Python标准库 subprocess 模块多进程编程详解

    subprocess 模块,允许生成新的进程执行命令行指令,python程序,以及其它语言编写的应用程序, 如 java, c++,rust 应用等。 subprocess可连接多个进程的输入、输出、错误管道,并且获取它们的返回码。 asyncio也支持subprocess. 许多知名库都在使用此模块创建进程,以及做为跨语言粘合

    2024年02月02日
    浏览(36)
  • python subprocess执行外部命令常用方法

    subprocess模块是Python标准库中的一个模块,用于创建和控制子进程。它提供了一种在Python程序中调用其他外部命令、执行系统命令和与系统进程进行交互的方法。常用的有两种方法:subprocess.run(),subprocess.Popen() 1. subprocess.run()方法 subprocess.run()是subprocess模块中一个常用的函数,

    2024年02月06日
    浏览(41)
  • Python+Selenium程序执行完,chrome浏览器自动关闭解决方案

    因为把driver = webdriver.Chrome()放在了函数内部,在函数执行完毕之后,程序内所有的步骤都结束了,关于这段程序的进程也就结束了,浏览器包含在内,所以才会自动退出。 设置全局变量,即把打开浏览器的操作放在函数外部,函数执行完毕,浏览器就不会关闭 关闭浏览器代

    2024年02月16日
    浏览(77)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包