如何终止使用 shell=True 启动的 python 子进程

2023-12-27

我使用以下命令启动子进程:

p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)

但是,当我尝试使用以下命令杀死时:

p.terminate()

or

p.kill()

该命令一直在后台运行,所以我想知道如何真正终止该进程。

请注意,当我运行命令时:

p = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE)

它在发出以下命令时确实成功终止p.terminate().


Use a 进程组 http://en.wikipedia.org/wiki/Process_group以便能够向组中的所有进程发送信号。为此,您应该附加一个会话ID http://pubs.opengroup.org/onlinepubs/009695399/functions/setsid.html到生成/子进程的父进程,在您的情况下是一个 shell。这将使其成为流程的组长。因此,现在,当信号发送到进程组领导者时,它会传输到该组的所有子进程。

这是代码:

import os
import signal
import subprocess

# The os.setsid() is passed in the argument preexec_fn so
# it's run after the fork() and before  exec() to run the shell.
pro = subprocess.Popen(cmd, stdout=subprocess.PIPE, 
                       shell=True, preexec_fn=os.setsid) 

os.killpg(os.getpgid(pro.pid), signal.SIGTERM)  # Send the signal to all the process groups
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何终止使用 shell=True 启动的 python 子进程 的相关文章

  • 如何在groupby之后将pandas数据框拆分为许多列

    我希望能够在 pandas 中使用 groupby 按列对数据进行分组 然后将其拆分 以便每个组都是数据框中自己的列 e g time data 0 1 2 0 1 2 3 0 2 3 4 0 3 1 2 1 4 2 3 1 5 3 4 1
  • 为什么方法无法访问类变量?

    我试图理解Python中的变量作用域 除了我不明白为什么类变量不能从其方法访问的部分之外 大多数事情对我来说都很清楚 在下面的例子中mydef1 无法访问a 但如果a可以在全局范围 类定义之外 声明 class MyClass1 a 25
  • 如何在算术表达式的结果上添加 SQLAlchemy 标签?

    我如何将这样的东西翻译成 SQLAlchemy select x y as difference 我知道该怎么做 x label foo 但我不确定在哪里放置下面的 label 方法调用 select table c x table c y
  • Pytest:如何使用从夹具返回的列表来参数化测试?

    我想使用由固定装置动态创建的列表来参数化测试 如下所示 pytest fixture def my list returning fixture depends on other fixtures return a dynamically
  • 将 Django 表单中的所有 CharField 表单字段输入转换为小写

    我使用 Django 表单进行用户注册 用户可以在其中输入优惠券代码 我希望在优惠券代码字段中输入的所有字符都转换为小写 我尝试过在保存方法 自定义清理方法和自定义验证器中使用 lower 但这些方法没有运气 下面是我的代码 class S
  • 如何从网站中提取冠状病毒病例?

    我正在尝试从网站中提取冠状病毒 https www trackcorona live https www trackcorona live 但我得到了一个错误 这是我的代码 response requests get https www t
  • Linux 文本文件操作

    我有一个格式的文件 a href a href a href a href 我需要选择 之后但 之前的文本 并将其打印在行尾 添加后 例如 a href http www wowhead com search Su a a a a a
  • pandas 两个数据框交叉连接[重复]

    这个问题在这里已经有答案了 我找不到有关交叉联接的任何内容 包括合并 联接或其他一些内容 我需要使用 my function 作为 myfunc 处理两个数据帧 相当于 for itemA in df1 iterrows for itemB
  • 在python中调用subprocess.Popen时“系统找不到指定的文件”

    我正在尝试使用svnmerge py合并一些文件 它在底层使用 python 当我使用它时 我收到一个错误 系统找不到指定的文件 工作中的同事正在运行相同版本的svnmerge py 以及 python 2 5 2 特别是 r252 609
  • 使用reduce方法的斐波那契数列

    于是 我看到有人用reduce方法来计算斐波那契数列 这是他的想法 1 0 1 1 2 1 3 2 5 3 对应于 1 1 2 3 5 8 13 21 代码如下所示 def fib reduce n initial 1 0 dummy ra
  • 如何像在浏览器中一样检索准确的 HTML

    我正在使用 Python 脚本来呈现网页并检索其 HTML 它适用于大多数页面 但对于其中一些页面 检索到的 HTML 不完整 我不太明白为什么 这是我用来废弃此页面的脚本 由于某种原因 每个产品的链接不在 HTML 中 Link http
  • 在 GAE/Python 中放置一次性代码和每次代码的最佳位置在哪里?

    我是 Google App Engine 和 Python 的新手 我无法理解有关在 Google App Engine 上运行的 Python 应用程序的一些基本问题 如果我想要执行代码 对于每个传入的请求 我应该将其放在哪里 我们正在捕
  • 别碰我的女人

    我讨厌的一件事迪斯图尔斯 http docs python org distutils 我猜他是邪恶的人 他这样做了 https github com python cpython blob 300dd552b15825abfe0e367a
  • 如何在python中递归复制目录并覆盖全部?

    我正在尝试复制 home myUser dir1 及其所有内容 及其内容等 home myuser dir2 在Python中 此外 我希望副本覆盖中的所有内容dir2 It looks like distutils dir util co
  • Matplotlib 将颜色图 tab20 更改为三种颜色

    Matplotlib 有一些新的且非常方便的颜色图 选项卡颜色图 https matplotlib org examples color colormaps reference html 我错过的是生成像 tab20b 或 tab20c 这
  • 使用脚本自动输入 SSH 密码

    我需要创建一个自动向 OpenSSH 输入密码的脚本ssh client 假设我需要通过 SSH 进入myname somehost用密码a1234b 我已经尝试过 bin myssh sh ssh myname somehost a123
  • 如何将reportlab与Google应用程序引擎一起使用

    我无法在谷歌应用程序引擎下正确导入reportlab 根据以下guide http blog notdot net 2010 04 Generating PDFs on App Engine Python and introducing M
  • Windows 与 Linux 文本文件读取

    问题是 我最近从 Windows 切换到 Ubuntu 我的一些用于分析数据文件的 python 脚本给了我错误 我不确定如何正确解决 我当前仪器的数据文件输出如下 Header 有关仪器等的各种信息 Data 状态 代码 温度 字段等 0
  • 字母尺度和随机文本上的马尔可夫链

    我想使用 txt 文件中的一本书中的字母频率生成随机文本 以便每个新字符 string lowercase 取决于前一个 如何使用马尔可夫链来做到这一点 或者使用每个字母都有条件频率的 27 个数组更简单 我想使用来自的字母频率生成随机文本
  • 使用Python重命名目录中的多个文件

    我正在尝试使用以下 Python 脚本重命名目录中的多个文件 import os path Users myName Desktop directory files os listdir path i 1 for file in files

随机推荐

  • 类似于任务管理器获取Windows中空闲进程的总CPU时间

    我正在开发一个大型应用程序 希望了解两个时间点之间 CPU 的负载情况 我不仅对我自己的过程感兴趣 而且对所有过程感兴趣 我的想法是获取两个时间段之间空闲进程的总 CPU 时间 然后将该值与实时差异进行比较 然后可以计算空闲进程上花费的平均
  • Facebook 点赞按钮的纯文本版本?

    有人觉得 Facebook Like 按钮过于侵入用户界面吗 就像它不适合 就像它是一些廉价的塑料制品 有没有人用过 JS 或其他东西来制作像纯文本这样的替代品 如果是这样 是否有人做过 A B 测试来看看它的性能是否与原始版本一样好 此外
  • RVM、Capistrano 和捆绑器路径问题

    当我手动安装与通过bundler capistrano安装时 生产的gem路径之间似乎存在差异 在rvm安装ruby 1 9 2并创建gemset myapp 之后 我确实通过gem install bundler安装了bundler 它被
  • 将 Java 对象实例替换为另一个和所有引用

    有没有一种方法可以用另一个对象替换java中的对象 从而更新对第一个对象的所有引用以指向第二个对象 在 C 中 这个问题在这里得到了回答 将对象实例替换为 C 中的另一个对象实例 https stackoverflow com questi
  • 如何告诉 iOS 我不希望应用程序停留在后台?

    有没有办法告诉 iOS 我不希望我的应用程序停留在后台 换句话说 我可以告诉我的应用程序在进入后台时自行退出吗 我在用ABPeoplePickerNavigationController在我的 UITbarController 的选项卡之一
  • 如何在大空间范围内加速最小成本路径模型

    继从如何提高最低成本路径模型的模拟速度 https stackoverflow com questions 21839462 how can i increase speed up simulation of my least cost p
  • 使用 onclick 事件解除 div 内“a”的 onclick 事件的绑定

    html div div class desc desc div a href foo php foo a div js container click function my function 当用户单击除 a 标签之外的容器内部时 此功
  • Unity 5 非静态字段、方法或属性错误需要对象引用

    在 Unity 5 中 在 PlayerMovement 类的第 35 行使用 c 时出现此错误 错误 CS0120 非静态字段需要对象引用 方法或属性 GameManager completeLevel 玩家动作类别 using Syst
  • 将鼠标悬停在 DIV 上时显示内容

    是否可以将鼠标悬停在 DIV 上时显示内容 看Image https i stack imgur com r4b0G jpg 当我将鼠标悬停在 div 上时 会发生转换 但是是否可以在悬停的 div 内显示内容 即 图片等 html div
  • 安全密码散列[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我需要在 Net WinForms 应用程序中存储单个密码的哈希值 最安全的方法是什么 尤其 盐 HMAC 还是两者兼而有之 多少盐 迭代了多少
  • 在 Material ui 中自定义扩展面板并覆盖样式

    我想在材质 ui 中自定义扩展面板 我发现由于扩展面板的默认样式 我想要在扩展面板上渲染的数据占用了太多空间
  • MySQL 表名按依赖顺序排序

    我想获取按其依赖顺序排序的表名称 例如 如果我有桌子users users orders and orders我想按以下顺序获取表名 users or orders不要紧 orders users orders 如果有办法请帮忙 听起来您正
  • Ubuntu 和 SSLv2_method 的未定义符号

    Canonical 是否在其 openssl 软件包版本中重命名符号 如果是 目的是什么 当我从头开始编译 openssl 1 0 0e tar gz 直接从 openssl org 下载 时 我看到了必要的符号 但 Python 和我 似
  • 如何在 _viewimports 文件中注入依赖项

    我正在尝试在 asp net Core 中生成通用 BaseViewPage 来访问当前用户的身份 为此 我创建了一个 BaseViewPage cs 文件 public abstract class BaseViewPage
  • UICloudSharingController 在 Xcode 11 中显示无限活动指示

    我有以下代码将 UICloudSharingController 导入到 swift UI 中 但第一次集成时 它只显示一个永不停止的活动指示器 然后第二次呈现 通过 sheet 时 没有活动指示器 第一次启动时 我可以看到右上角带有活动指
  • 比较 smarty 中的两个日期

    我有两个各自格式的日期 02 Dec 14 和 17 Dec 14 我想在 smarty 中比较这两个日期 我如何比较这两个日期 请帮忙 提前致谢 如果您将这些日期分配给 Smarty 例如这样 smarty gt assign date2
  • SplitContainer 中的固定面板高度

    我有一个 WinForm 其顶部包含一个 BindingNavigator 一个 splitContainer 其下方有两个水平面板 splitContainer 填充了 BindingNavigator 未占用的空间 我想将底部面板设置为
  • pandas 数据透视表列名

    对于这样的数据框 d id 1 1 1 2 2 Month 1 2 3 1 3 Value 12 23 15 45 34 Cost 124 214 1234 1324 234 df pd DataFrame d Cost Month Val
  • PHP & MySQL 函数从数据库中删除未选中的类别问题

    我有一个 PHP 函数 允许用户选择帖子应该显示的类别 我希望能够在用户取消选中复选框时从数据库中删除用户选择的类别 但我尝试的一切似乎都删除了所有用户类别或根本不起作用 有人可以帮我解决这个问题吗 这是我的 PHP 函数的一部分 它应该删
  • 如何终止使用 shell=True 启动的 python 子进程

    我使用以下命令启动子进程 p subprocess Popen cmd stdout subprocess PIPE shell True 但是 当我尝试使用以下命令杀死时 p terminate or p kill 该命令一直在后台运行