免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2764 | 回复: 5
打印 上一主题 下一主题

python subprocess模块中的一些函数不懂求解答 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-09-07 13:52 |只看该作者 |倒序浏览
各位 本人刚开始学python 对创建进程模块subprocess模块中的函数不懂 ,下面是subprocess模块中的两个函数,对函数中的各个参数作用 以及这两个函数作用不了解

急需各位高手解答 要详细些的解释  多谢多谢

subprocess.call("ping -c 1 %s" % ip,shell = True,stdout = open('/dev/null','w'),stderr = subprocess.STDOUT)

subprocess.Popen("arping -c 1  %s" % ip,shell = True,stdout = subprocess.PIPE)

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
2 [报告]
发表于 2012-09-07 14:42 |只看该作者
看python manual。

论坛徽章:
0
3 [报告]
发表于 2012-09-07 15:09 |只看该作者
可是 没有看懂 所有请高手指点一下

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
4 [报告]
发表于 2012-09-07 17:19 |只看该作者
本帖最后由 linux_c_py_php 于 2012-09-07 17:19 编辑

subprocess.call("ping -c 1 %s" % ip,shell = True,stdout = open('/dev/null','w'),stderr = subprocess.STDOUT)

分析: 使用/bin/bash解析命令"ping -c 1 %s" %ip, 也就是使用ping程序发1个ICMP请求应答包到ip.  另外, 子进程的标准输出重定向到/dev/null, 也就是丢弃标准输出, 并且将标准错误重定向到标准输出, 也就是同样重定向到了/dev/null.  这条语句的返回值其实就是ping的返回值, 从实现角度来讲, 其实是当前py进程创建shell进程, shell进程创建ping进程, 最终ping进程的返回值被shell进程wait, 紧接着shell进程将ping进程的返回码继续向上返回到py进程, 然后py进程wait得到这个状态码, 可以判断是否ping通, 因为ping程序如果成功返回0, 其他任何情况返回非0.

subprocess.Popen("arping -c 1  %s" % ip,shell = True,stdout = subprocess.PIPE)

分析:一样, arp请求局域网内的ip机器的mac, 有相应arping返回0, 否则返回1, 一路从arping->shell->py返回上来,stdout是重定向子进程的标准输出到一个管道, py进程就可以读取管道得到子进程的输出了.

怎么读取arping的标准输出呢?

Popen.communicate(input=None)  自己看手册.

论坛徽章:
0
5 [报告]
发表于 2012-09-10 10:10 |只看该作者
这个函数的作用都是用来创建新的进程吗  ? subprocess.Popen返回的的是一个进程对象 。 这两个函数的区别  ??

实在不明白父进程,子进程, 线程的关系  求高手解答一下  多谢

论坛徽章:
0
6 [报告]
发表于 2012-09-13 17:08 |只看该作者
回复 5# jcak001

看Unix环境高级编程 进程一章
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP