首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >airodump-ng的子进程grab stdout

airodump-ng的子进程grab stdout
EN

Stack Overflow用户
提问于 2012-07-07 20:02:11
回答 2查看 2.7K关注 0票数 1

我尝试使用子进程从airodump-ng获取stdout,但没有成功。我认为我的代码导致了死锁。

代码语言:javascript
复制
   airodump = subprocess.Popen(['airodump-ng','mon0'],stdin=subprocess.PIPE,
                              stdout=subprocess.PIPE,
                              stderr=subprocess.PIPE)

    # wait for 15 seconds to find all networks
    time.sleep(15)

    # save the output
    o_airodump = airodump.stdout.read()
    os.kill(airodump.pid, signal.SIGKILL)
    # airodump.terminate
    print(o_airodump)

如何避免这个问题。我想不出一个干净的解决方案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-08 01:42:58

不要休眠和等待(这只会导致airodump阻塞满管道缓冲区),也不要使用无界的read()。communicate()方法可以完成您所需的工作:

代码语言:javascript
复制
o_airodump, unused_stderr = airodump.communicate(timeout=15)
airodump.kill()

注意:通信的超时参数是在Python3.3中引入的,现在还没有完全用完。;)

票数 2
EN

Stack Overflow用户

发布于 2012-07-07 20:06:38

代码语言:javascript
复制
airodump.communicate() 

等待进程终止,然后返回(stdout, stderr)

如果你真的在推,你总是可以使用ctype直接链接到c库。享受黑客攻击吧。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11374825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档