在Linux中工作时在Python中模拟Ctrl-C键盘中断
回答问题 我正在研究一些脚本(在我工作的公司中),这些脚本被加载/卸载到管理程序中,以便在事件发生时触发一段代码。实际卸载脚本的唯一方法是按 Ctrl-C。我正在用 Python 编写一个函数来自动化这个过程 一旦它在程序的输出中看到字符串"done",它就应该终止vprobe。我正在使用subprocess.Popen执行命令: lineList = buff.readlines() cmd =
·
回答问题
我正在研究一些脚本(在我工作的公司中),这些脚本被加载/卸载到管理程序中,以便在事件发生时触发一段代码。实际卸载脚本的唯一方法是按 Ctrl-C。我正在用 Python 编写一个函数来自动化这个过程
一旦它在程序的输出中看到字符串"done"
,它就应该终止vprobe
。我正在使用subprocess.Popen
执行命令:
lineList = buff.readlines()
cmd = "vprobe /vprobe/myhello.emt"
p = subprocess.Popen(args = cmd, shell=True,stdout = buff, universal_newlines = True,preexec_fn=os.setsid)
while not re.search("done",lineList[-1]):
print "waiting"
os.kill(p.pid,signal.CTRL_C_EVENT)
如您所见,我正在以读写模式打开的buff
文件描述符中写入输出。我检查最后一行;如果它有'done'
,我杀了它。不幸的是,CTRL_C_EVENT
仅对 Windows 有效。我能为 Linux 做些什么?
Answers
我认为您可以发送 Linux 等效项signal.SIGINT
(中断信号)。
(编辑:我曾经在这里有一些东西不鼓励使用这种策略来控制子进程,但仔细阅读后,听起来你已经决定在这种特定情况下需要 control-C ......所以,SIGINT 应该这样做.)
更多推荐
已为社区贡献126473条内容
所有评论(0)