命中KeyboardInterrupt子进程时如何在变量中保存最后的输出

问题描述

我对子流程模块完全陌生。我正在尝试自动执行取消身份验证攻击命令。如您所知,当我运行SA = [SpriteClassA() for _ in range(1000)] SB = [SpriteClassA() for _ in range(1000)] SC = [SpriteClassC() for _ in range(1000)] Group1 = pygame.sprite.Group(SA) Group2 = pygame.sprite.Group(SB) Group3 = pygame.sprite.Group(SC) 时,它将查找附近的AP以及与其连接的客户端。

现在,当我尝试使用让我们在Python中运行airodump-ng wlan0mon时,假设您知道此命令会一直运行到用户按下Ctrl + C,因此当用户按下Ctrl + C时,它将保存最后的输出变量,但我得到的错误是这样的:

p = subprocess.run(["airmon-ng","wlan0mon"],capture_output=True)

该如何解决?

解决方法

只需使用Python的error handling。像这样使用KeyboardInnterrupttry语句捕获任何except(在子过程函数中):

def stuff(things):
  try:
    # do stuff
  except KeyboardInterrupt:
    return last_value

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...