如何杀死另一个脚本运行的脚本

时间:2020-11-12 14:58:39

标签: python shell

我正在研究以下脚本以自动执行枚举阶段。

我使用子进程来运行nmap:

subprocess.run(["nmap", "192.168.1.1"])

我想获得杀死这个子进程并执行其余代码的可能性,但是当我选择ctrl + c时,整个脚本都运行了。

3 个答案:

答案 0 :(得分:1)

通过以下操作对其进行背景处理:

ctrl+z

答案 1 :(得分:0)

您可以在 try /除外中进行子流程

try:
    subprocess.run(["nmap", "192.168.1.1"])
except:
    print("Nmap Stopped.")
    pass

当您按下 CTRL + C 时,将发生错误,并使用 except 部分进行处理。

答案 2 :(得分:0)

在这里应使用subprocess.Popensubprocess.call而不是subprocess.run

subprocess.call将成为阻塞调用,这意味着它将等到命令完成后再继续执行代码。

或另一种方法是将subprocess.run放在async函数中并分别执行

示例

import asyncio
async def run_nmap(ip:str):
    subprocess.run(["nmap", ip])

def run_the_thing():
    ...
    loop = asyncio.get_event_loop()
    loop.create_task(run_nmap("192.168.1.1"))
    ...