通过Python子进程模块(airodump-ng)停止Linux终端中正在运行的进程[重复]

Posted

技术标签:

【中文标题】通过Python子进程模块(airodump-ng)停止Linux终端中正在运行的进程[重复]【英文标题】:Stop a running process in a Linux terminal through the Python subprocess module (airodump-ng) [duplicate] 【发布时间】:2016-01-31 20:50:28 【问题描述】:

我编写了一个程序(我在终端中运行它),它通过终端命令列表 (Kali Linux)。

import subprocess as sub
import time
sub.call(['airmon-ng', 'start', 'wlan0'])
p = sub.call(['airodump-ng','wlan0mon'])
time.sleep(10)
p.kill()

最后一个命令是airodump-ng wlan0mon。一切正常(一切都显示在终端中(信标、essid 等)。

在指定时间后,我希望终止进程 (airodump-ng wlan0mon)。

我不想手动按Ctrl + Cp.kill() 不起作用(可能是使用不当)。

我该怎么做?我应该通过子进程模块发送什么命令?

【问题讨论】:

所有这些都是为了使任务自动化一点。该程序还遍历其他命令。 `ifconfig wlan0 down' 等代码有效。我只是想终止它。 相关:How to terminate a python subprocess launched with shell=True 【参考方案1】:

subprocess.call 方法是一个高级 API,它在返回退出代码之前等待进程终止。如果您需要主进程在子进程运行时继续运行,则需要使用稍低级别的 API:subprocess.Popen,它会在后台启动进程。

使用p = sub.Popen(['airodump-ng','wlan0mon']) 代替p = sub.call(['airodump-ng','wlan0mon']) 应该可以工作。

【讨论】:

现在可以了。谢谢

以上是关于通过Python子进程模块(airodump-ng)停止Linux终端中正在运行的进程[重复]的主要内容,如果未能解决你的问题,请参考以下文章

python模块--subprocess

为啥 Python 不能通过子进程执行 java.exe?

导入pyspark ETL模块并使用python子进程作为子进程运行时出错

python子进程模块subprocess详解

python subprocess模块 监控子进程的2种方式 忙等待和立即返回同时设置子进程超时

python子进程模块的动态输出