相关疑难解决方法(0)

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

给出以下代码:

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

如果在执行ExternalProcess(不是python脚本)期间按下Ctrl+ C命令,究竟发生了什么?

我是否可以确定100%在此范围内,如果我按下Ctrl+ C,即使它在执行期间发生,它也总会进入'除外' ExternalProcess

或者它取决于外部流程如何处理它?

python

28
推荐指数
1
解决办法
1万
查看次数

杀死python进程时杀死子进程?

我正在编写一个激活子进程的python程序(使用Popen).我正在读取子进程的stdout,进行一些过滤,并写入主进程的stdout.

当我杀死主进程(cntl-C)时,子进程继续运行.我如何杀死子进程?子进程很可能运行很长时间.

上下文:我一次只启动一个子进程,我正在过滤它的stdout.用户可能决定中断以尝试其他操作.

我是python的新手,我正在使用Windows,所以请保持温和.

python windows process

6
推荐指数
1
解决办法
3535
查看次数

在KeyboardInterrupt之后杀死subprocess.call

subprocess.call当我得到键盘中断(ctrl-c)时,我需要停止使用Python 创建的进程

问题是p在完成执行之前没有分配给它的值

p = subprocess.call(cmd)

所以我不能os.kill用来杀死它.另外,shell=True因为原因无法使用.

我想做的是:

try:
  p = subprocess.call(cmd)
except KeyboardInterrupt:
  os.kill(p.pid,signal.SIGTERM)
  sys.exit('exited after ctrl-c')
Run Code Online (Sandbox Code Playgroud)

python subprocess kill process

3
推荐指数
1
解决办法
4861
查看次数

标签 统计

python ×3

process ×2

kill ×1

subprocess ×1

windows ×1