python基础教程之popen函数操作其它程序的输入和输出示例


Posted in Python onFebruary 10, 2014

一、函数介绍

1.1 函数原型:

#include <stdio.h>
FILE *popen(const char *command,const char *open_mode);

1.2 说明

popen函数允许一个程序将另一个程序作为新进程启动,并可以传递数据给它或者通过它接收数据。command字符串是要运行的程序名和相应参数(比如:ls或ls -l),openmode必须是 r 或w。如果是r,被调用程序的输出可以被调用它的程序使用;如果是w,调用程序就可以用fwrite向被调用程序发送数据作为它在标准输入流上的输入。

二、测试程序准备

这里准备两个很简单的程序供下面测试使用。

2.1 输出测试程序

// outputTest.c
#include <stdio.h>
int main()
{
        printf("Just a test ! \n");
        return 0;
}

主要是实现向标准输出设备输出字符串,供下面的程序进行测试。

2.2 输入测试程序

// inputTest.c
#include <stdio.h>
int main()
{
        char buf[1024] = {0};
        scanf("%s",buf);
        printf("your input : %s\n",buf);
        return 0;
}

主要是实现从标准输入设备输入字符串并输出,供下面的程序进行测试。

三、popen操作示例(C代码)

3.1 获得程序输出

以outputTest程序来测试,代码如下:

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main()
{
        FILE *read_fp;
        char buffer[BUFSIZ + 1];
        int chars_read;
        memset(buffer,'\0',sizeof(buffer));
        read_fp = popen("./outputTest","r");
        if(read_fp != NULL)
        {
                chars_read = fread(buffer,sizeof(char),BUFSIZ,read_fp);
                if(chars_read > 0)
                {
                        printf("Output was : \n%s\nDone\n",buffer);
                }
                pclose(read_fp);
                exit(EXIT_SUCCESS);
        }
        exit(EXIT_FAILURE);
}

运行效果如下:

python基础教程之popen函数操作其它程序的输入和输出示例

这里主要用r参数获得被调用程序的输出。

3.2 给其它程序传参数

以inputTest来测试,代码如下:

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main()
{
        FILE *write_fp;
        char buffer[BUFSIZ + 1];
        sprintf(buffer,"Once...\n");
        write_fp = popen("./inputTest","w");
        if(write_fp != NULL)
        {
                fwrite(buffer,sizeof(char),strlen(buffer),write_fp);
                pclose(write_fp);
                exit(EXIT_SUCCESS);
        }
        exit(EXIT_FAILURE);
}

运行效果如下:

python基础教程之popen函数操作其它程序的输入和输出示例

这里主要用w参数向被调用程序传参数。

四、poepn操作示例(python代码)

其实python也可以这样玩的。

4.1 获得程序输出

还以上文提到的outputTest程序为例,代码如下:

#! /usr/bin/python
import os
#var = os.popen('ls -l').read()
var = os.popen('./outputTest').read()
print var

运行效果如下:
python基础教程之popen函数操作其它程序的输入和输出示例

4.2 给其它程序传参数

还以上文提到的inputTest程序为例,代码如下:

#! /usr/bin/python
import os
os.popen('./inputTest','w').write("test")

运行效果如下:

 
Python 相关文章推荐
详解在Python程序中使用Cookie的教程
Apr 30 Python
Python字符和字符值(ASCII或Unicode码值)转换方法
May 21 Python
Python素数检测实例分析
Jun 15 Python
Django自定义认证方式用法示例
Jun 23 Python
解决Python网页爬虫之中文乱码问题
May 11 Python
对python指数、幂数拟合curve_fit详解
Dec 29 Python
Python JSON格式数据的提取和保存的实现
Mar 22 Python
Python之修改图片像素值的方法
Jul 03 Python
python中比较两个列表的实例方法
Jul 04 Python
python使用Matplotlib改变坐标轴的默认位置
Oct 18 Python
Python图像处理库PIL中图像格式转换的实现
Feb 26 Python
在tensorflow下利用plt画论文中loss,acc等曲线图实例
Jun 15 Python
python基础教程之python消息摘要算法使用示例
Feb 10 #Python
go和python调用其它程序并得到程序输出
Feb 10 #Python
python实现socket端口重定向示例
Feb 10 #Python
python访问sqlserver示例
Feb 10 #Python
python实现代码行数统计示例分享
Feb 10 #Python
python基础教程之获取本机ip数据包示例
Feb 10 #Python
python基础教程之udp端口扫描
Feb 10 #Python
You might like
PHP nl2br函数 将换行字符转成 &amp;lt;br&amp;gt;
2009/08/21 PHP
PHP版网站缓存加快打开速度的方法分享
2012/06/03 PHP
php 模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录的详细介绍
2013/06/18 PHP
php中chdir()函数用法实例
2014/11/13 PHP
高质量PHP代码的50个实用技巧必备(上)
2016/01/22 PHP
用javascript父窗口控制只弹出一个子窗口
2007/04/10 Javascript
window.location.hash 使用说明
2010/11/08 Javascript
js操作textarea方法集合封装(兼容IE,firefox)
2011/02/22 Javascript
jquery向.ashx文件post中文乱码问题的解决方法
2011/03/28 Javascript
可兼容IE的获取及设置cookie的jquery.cookie函数方法
2013/09/02 Javascript
动态添加删除表格行的js实现代码
2014/02/28 Javascript
Node.js事件循环(Event Loop)和线程池详解
2015/01/28 Javascript
Nodejs实现批量下载妹纸图
2015/05/28 NodeJs
livereload工具实现前端可视化开发【推荐】
2016/12/23 Javascript
jQuery实现动态删除LI的方法
2017/05/30 jQuery
Windows下快速搭建NodeJS本地服务器的步骤
2017/08/09 NodeJs
layui之select的option叠加问题的解决方法
2018/03/08 Javascript
p5.js入门教程之小球动画示例代码
2018/03/15 Javascript
JavaScript实现点击出现图片并统计点击次数功能示例
2018/07/23 Javascript
基于游标的分页接口实现代码示例
2018/11/12 Javascript
CountUp.js实现数字滚动增值效果
2019/10/17 Javascript
Vue跨域请求问题解决方案过程解析
2020/08/07 Javascript
Python字典及字典基本操作方法详解
2018/01/30 Python
naturalizer加拿大官网:美国娜然女鞋
2017/04/04 全球购物
日本索尼音乐商店:Sony Music Shop
2018/07/17 全球购物
英国乐购杂货:Tesco Groceries
2018/11/29 全球购物
沃达丰英国有限公司:Vodafone英国
2019/04/16 全球购物
劳资人员岗位职责
2013/12/19 职场文书
简历的个人自我评价范文
2014/01/03 职场文书
装修致歉信
2014/01/15 职场文书
高中地理教学反思
2014/01/29 职场文书
《陋室铭》教学反思
2014/02/26 职场文书
幼儿园家长寄语
2014/04/02 职场文书
学校党员个人问题整改措施思想汇报
2014/10/08 职场文书
大学生就业推荐表自我评价
2015/03/02 职场文书
观看焦裕禄观后感
2015/06/09 职场文书