Python中如何处理CTRL-C终止

-1 投票
1 回答
1539 浏览
提问于 2025-04-17 05:11

目前,我有一个可执行文件(exe),我需要通过Python给它发送命令。单独运行这段代码时是可以的,但当我把这段代码和我的最终程序合并后,它就不工作了。

简单来说,在使用程序shell_start上传前两个文件后(上传在我传递命令的程序中是-f),Python决定跳过最后一个上传,那个使用shell_forward的程序。最后上传的三个文件用shell_forward根本就不行。

所以,我主要想问的是,如果你感到困惑的话:为什么当程序shell_start完成上传两个命令和文件后,Python的命令行不让我在里面输入任何东西?它就像一个命令提示符窗口,在代码执行后不让我输入任何内容。

这就是我觉得需要按下ctrl-c来终止之前的shell_start.exe进程,这样Python在执行完后可能会让我输入。

这是代码:

import os, time

name = raw_input("Input your name: ")
apn = raw_input("Input apn name: ")
ecid = raw_input("Input ecid name: ")
kernel = raw_input("Input kernel name: ")

os.system('shell_start.exe -f %s'%name)
time.sleep(1)
os.system('shell_start.exe -f %s'%apn)
time.sleep(1)

os.system('shell_forward.exe --imagefile myfile.img --ecid %(x)s --kernel %(y)s '% {"x" : ecid, "y" : kernel})

1 个回答

2

你可以尝试用 subprocess 来替代 os.system,这样可能会得到更好的效果。

subprocess 模块可以让你创建新的进程,连接它们的输入、输出和错误信息,并获取它们的返回码。这个模块的目的是取代一些旧的模块和函数,比如:

os.system
os.spawn*
os.popen*
popen2.*
commands.*

另外,你可以查看 PEP 324,这是一个提议引入 subprocess 模块的文档。

撰写回答