如果在子进程执行时执行 Ctrl+C,Python 是否总是引发异常?

2023-12-26

给出以下代码:

try:
  subprocess.Popen(ExternalProcess, stdout=subprocess.PIPE,stderr=subprocess.PIPE, shell=True).communicate()
except KeyboardInterrupt:
  exit(0)

If during the execution of ExternalProcess(which is not a python script) one presses the Ctrl+C command, what exactly is going on?

Can I be sure for a 100% that in this scope, if I press the Ctrl+C, it will always get into the 'except' even if it happens during the execution of ExternalProcess?

还是取决于外部流程如何处理?


As far as I understand, once you fork/exec a process, it inherits the parent's process group http://en.wikipedia.org/wiki/Process_group. That means, that SIGINT (which is the result of Ctrl+C and the cause of KeyboardInterrupt) will be sent to both the child and the parent.

这是一个例子:

File a.py:

import subprocess

try:
    subprocess.Popen("python b.py".split()).communicate()
except KeyboardInterrupt:
    print "a.py got ctrl-c"

File b.py

try:
    while True: pass
except KeyboardInterrupt:
    print "b.py got ctrl-c"

现在运行它并停止:

> python a.py
^Cb.py got ctrl-c
a.py got ctrl-c
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果在子进程执行时执行 Ctrl+C,Python 是否总是引发异常? 的相关文章

  • Python PAM 模块的安全问题?

    我有兴趣编写一个 PAM 模块 该模块将利用流行的 Unix 登录身份验证机制 我过去的大部分编程经验都是使用 Python 进行的 并且我正在交互的系统已经有一个 Python API 我用谷歌搜索发现pam python http pa
  • 如何在 Sublime Text 2 的 OSX 终端中显示构建结果

    我刚刚从 TextMate 切换到 Sublime Text 2 我非常喜欢它 让我困扰的一件事是默认的构建结果显示在 ST2 的底部 我的程序产生一些很长的结果 显示它的理想方式 如在 TM2 中 是并排查看它们 如何在 Mac 操作系统
  • 如何等到 Excel 计算公式后再继续 win32com

    我有一个 win32com Python 脚本 它将多个 Excel 文件合并到电子表格中并将其另存为 PDF 现在的工作原理是输出几乎都是 NAME 因为文件是在计算 Excel 文件内容之前输出的 这可能需要一分钟 如何强制工作簿计算值
  • SQL Alchemy 中的 NULL 安全不等式比较?

    目前 我知道如何表达 NULL 安全的唯一方法 SQL Alchemy 中的比较 其中与 NULL 条目的比较计算结果为 True 而不是 NULL 是 or field None field value 有没有办法在 SQL Alchem
  • Python tcl 未正确安装

    我刚刚为 python 安装了graphics py 但是当我尝试运行以下代码时 from graphics import def main win GraphWin My Circle 100 100 c Circle Point 50
  • 使用 Pycharm 在 Windows 下启动应用程序时出现 UnicodeDecodeError

    问题是当我尝试启动应用程序 app py 时 我收到以下错误 UnicodeDecodeError utf 8 编解码器无法解码位置 5 中的字节 0xb3 起始字节无效 整个文件app py coding utf 8 from flask
  • 表达式中的 Python 'in' 关键字与 for 循环中的比较 [重复]

    这个问题在这里已经有答案了 我明白什么是in运算符在此代码中执行的操作 some list 1 2 3 4 5 print 2 in some list 我也明白i将采用此代码中列表的每个值 for i in 1 2 3 4 5 print
  • Python 3 中“map”类型的对象没有 len()

    我在使用 Python 3 时遇到问题 我得到了 Python 2 7 代码 目前我正在尝试更新它 我收到错误 类型错误 map 类型的对象没有 len 在这部分 str len seed candidates 在我像这样初始化它之前 se
  • 从 pygame 获取 numpy 数组

    我想通过 python 访问我的网络摄像头 不幸的是 由于网络摄像头的原因 openCV 无法工作 Pygame camera 使用以下代码就像魅力一样 from pygame import camera display camera in
  • 如何将 PIL 图像转换为 NumPy 数组?

    如何转换 PILImage来回转换为 NumPy 数组 这样我就可以比 PIL 进行更快的像素级转换PixelAccess允许 我可以通过以下方式将其转换为 NumPy 数组 pic Image open foo jpg pix numpy
  • 为美国东部以外地区的 Cloudwatch 警报发送短信?

    AWS 似乎没有为美国东部以外的 SNS 主题订阅者提供 SMS 作为协议 我想连接我的 CloudWatch 警报并在发生故障时接收短信 但无法将其发送到 SMS YES 经过一番挖掘后 我能够让它发挥作用 它比仅仅选择一个主题或输入闹钟
  • VSCode:调试配置中的 Python 路径无效

    对 Python 和 VSCode 以及 stackoverflow 非常陌生 直到最近 我已经使用了大约 3 个月 一切都很好 当尝试在调试器中运行任何基本的 Python 程序时 弹出窗口The Python path in your
  • 如何从没有结尾的管道中读取 python 中的 stdin

    当管道来自 打开 时 不知道正确的名称 我无法从 python 中的标准输入或管道读取数据 文件 我有作为例子管道测试 py import sys import time k 0 try for line in sys stdin k k
  • 在 Pandas DataFrame Python 中添加新列[重复]

    这个问题在这里已经有答案了 例如 我在 Pandas 中有数据框 Col1 Col2 A 1 B 2 C 3 现在 如果我想再添加一个名为 Col3 的列 并且该值基于 Col2 式中 如果Col2 gt 1 则Col3为0 否则为1 所以
  • 用于运行可执行文件的python多线程进程

    我正在尝试将一个在 Windows 上运行可执行文件并管理文本输出文件的 python 脚本升级到使用多线程进程的版本 以便我可以利用多个核心 我有四个独立版本的可执行文件 每个线程都知道要访问它们 这部分工作正常 我遇到问题的地方是当它们
  • 从 Python 中的类元信息对 __init__ 函数进行类型提示

    我想做的是复制什么SQLAlchemy确实 以其DeclarativeMeta班级 有了这段代码 from sqlalchemy import Column Integer String from sqlalchemy ext declar
  • 在python中,如何仅搜索所选子字符串之前的一个单词

    给定文本文件中的长行列表 我只想返回紧邻其前面的子字符串 例如单词狗 描述狗的单词 例如 假设有这些行包含狗 hotdog big dog is dogged dog spy with my dog brown dogs 在这种情况下 期望
  • 您可以在 Python 类型注释中指定方差吗?

    你能发现下面代码中的错误吗 米皮不能 from typing import Dict Any def add items d Dict str Any gt None d foo 5 d Dict str str add items d f
  • Spark.read 在 Databricks 中给出 KrbException

    我正在尝试从 databricks 笔记本连接到 SQL 数据库 以下是我的代码 jdbcDF spark read format com microsoft sqlserver jdbc spark option url jdbc sql
  • Pandas 与 Numpy 数据帧

    看这几行代码 df2 df copy df2 1 df 1 df 1 values 1 df2 ix 0 0 我们的教练说我们需要使用 values属性来访问底层的 numpy 数组 否则我们的代码将无法工作 我知道 pandas Data

随机推荐

  • Visual Studio 2015 OpenMP 支持

    我在 Visual Studio 2015 中获取 OpenMP 支持时遇到问题 我已经将项目选项配置为使用 openmp 项目 gt 属性 gt C C gt 语言 gt OpenMP支持 是 代码如下 非常简单的代码 用于测试OpenM
  • 仅打印字符串中的第一个字段

    我有一个约会12 12 2013 14 32我想将其转换为仅12 12 2013 该字符串可以是1 1 2013 12 32 or 1 10 2013 23 41我只需要日期部分 您可以使用各种 Unix 工具轻松完成此操作 cut d f
  • 将 ul 嵌套在 ol 中

    我试图创建一个有序列表 其中包含两个项目 每个列表下包含三个项目 其中有项目符号点 我的代码未通过验证 因为它表示在此上下文中不允许元素 ul 作为元素 ol 的子元素 但我到处都看到它说这没问题 这是我的代码 ol li First nu
  • 链接器输入文件未使用,因为链接未完成 - gcc

    我是编写 makefile 的初学者 我有一个类似这样的 makefile PATH1 ref CC gcc LINK gcc INCLUDES INCLUDES I PATH1 inc I PATH1 abc inc I PATH1 de
  • Modernizr 如何做边框半径

    你能帮我解释一下吗Modernizr 如果我使用某个功能 例如 border radius 我使用旧版浏览器运行它 现代化者是否会自动将 css 添加到页面 或者我应该编写代码来呈现控件以使其看起来像有边框一样 如果第二种情况属实 那么我为
  • 如何验证历史数据?

    目前 我们正在使用日历实例读取日期 以便使用 SparkSQL 选取最后一个月的记录 现在我们需要 如果在前一天添加额外的事件 我们还必须能够手动插入摘要开始和结束日期 以防我们需要手动重新运行之前时间段的作业 例如 手动重新运行表可能如下
  • HTML5 和 RDFa 支持

    我即将向现有的 HTML5 Web 应用程序引入开放图谱协议 并且我希望包含必要的 RDFa 数据 而不引入任何不必要的杂项 我看过HTML RDFa 1 1 http www w3 org TR rdfa in html 草稿并与Face
  • CSS 中内嵌的 SVG 图像

    这是一个基本的 SVG 图像悬停动画 有没有一种编码方法可以避免编写 SVG 代码两次 body background color 181818 a webkit transition all 3s ease moz transition
  • Pandas Concat 遇到内存错误

    我正在尝试预处理数据以进行进一步分析 首先 我从 csv 文件 x 中读取数据 然后我把它分成三个部分 最后我需要使用转换一个数组get dummies concat and sum的结果groupby import pandas as p
  • Android 中的静音流

    我构建了一个小应用程序 可以使用该类将音乐流静音 取消静音AudioManager 事实上 它一直有效 直到我关闭应用程序 即 我已将流静音 关闭应用程序 重新启动应用程序 并且按钮不再取消流静音 我在网上搜索过 但似乎没有人遇到过这个问题
  • 我应该使用哪种分层模型?邻接、嵌套还是枚举?

    我有一个表 其中包含世界上所有地理位置及其关系的位置 这是一个显示层次结构的示例 您将看到数据实际上存储为所有三个 枚举路径 邻接表 嵌套集 数据显然也永远不会改变 以下是英国布莱顿地点的直系祖先的示例 该地点的 woeid 为 13911
  • 使用 PDO 处理错误的最佳实践

    Problem 寻找使用 PDO 进行错误处理的最佳实践 我在网站 SO 书籍等上找到的选项 许多网站表示您应该在您的catch block SO 上的大量用户表示 由于安全风险 您永远不应该回显错误消息 其他人建议将其记录到文档根目录之外
  • 从 R 中用户定义的语料库中删除停用词

    我有一组文件 documents c She had toast for breakfast The coffee this morning was excellent For lunch let s all have pancakes L
  • 在 C# 中每行读取一个字符串行[重复]

    这个问题在这里已经有答案了 可能的重复 在 net中以换行符分割字符串的最简单方法 https stackoverflow com questions 1547476 easiest way to split a string on new
  • Devise:突然无法登录了

    我正在使用 Devise 1 3 4 对我的应用程序中的后端进行身份验证 我已经连续几天无法登录了 发生的情况是 我进入登录页面 admin sign in 使用良好的凭据登录 在日志中看到登录成功 last sign in at curr
  • Spring MutableValues 的 NoSuchMethodError

    我编写了一个测试 在其中使用注释指定应用程序上下文位置 然后我将我的 dao 自动连接到测试中 ContextConfiguration locations file service src main webapp WEB INF appl
  • 单选按钮在 Safari 和 Chrome 中不显示

    我对 html 和 css 的了解有限 如果这是一个愚蠢的问题 请原谅 我尝试了不同的方法 但无法解决这个问题 http teddyslist com dev register php http teddyslist com dev reg
  • 从 XML 字符串生成 XML 架构

    我有一个 XML 字符串 想要加载到 Excel 工作表中 我几乎已经让它工作了 但我需要能够生成传递给 XmlMaps Add 的架构 String xml This is already populated with an XML St
  • 在 GAE 上,如何根据正确的客户端时区显示日期?

    在我的 Google App Engine 应用程序上 我在模型中存储自动更新的日期 时间 如下所示 class MyModel db Model date db DateTimeProperty auto now add True 但是
  • 如果在子进程执行时执行 Ctrl+C,Python 是否总是引发异常?

    给出以下代码 try subprocess Popen ExternalProcess stdout subprocess PIPE stderr subprocess PIPE shell True communicate except