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 strip lstrip rstrip使用方法
Sep 06 Python
基于python的汉字转GBK码实现代码
Feb 19 Python
在Django中创建动态视图的教程
Jul 15 Python
Python复数属性和方法运算操作示例
Jul 21 Python
python中format()函数的简单使用教程
Mar 14 Python
详解Selenium+PhantomJS+python简单实现爬虫的功能
Jul 14 Python
OpenCV3.0+Python3.6实现特定颜色的物体追踪
Jul 23 Python
python实现超市商品销售管理系统
Oct 25 Python
Python中six模块基础用法
Dec 08 Python
python实现提取COCO,VOC数据集中特定的类
Mar 10 Python
Python自然语言处理之切分算法详解
Apr 25 Python
Pygame如何使用精灵和碰撞检测
Nov 17 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
解析curl提交GET,POST,Cookie的简单方法
2013/06/29 PHP
Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法
2016/05/31 PHP
php+ajax实现仿百度查询下拉内容功能示例
2017/10/20 PHP
php如何把表单内容提交到数据库
2019/07/08 PHP
php实现的支付宝网页支付功能示例【基于TP5框架】
2019/09/16 PHP
jQuery弹出层插件简化版代码下载
2008/10/16 Javascript
JavaScript 图片预览效果 推荐
2009/12/22 Javascript
详解JS 比较两个Json对象的值是否相等的实例
2013/11/20 Javascript
table行随鼠标移动变色示例
2014/05/07 Javascript
AngularJS中的Promise详细介绍及实例代码
2016/12/13 Javascript
jQuery Validate表单验证插件的基本使用方法及功能拓展
2017/01/04 Javascript
详解浏览器渲染页面过程
2017/02/09 Javascript
Koa2 之文件上传下载的示例代码
2018/03/29 Javascript
layui table表格数据的新增,修改,删除,查询,双击获取行数据方式
2019/11/14 Javascript
python批量生成本地ip地址的方法
2015/03/23 Python
Python制作Windows系统服务
2017/03/25 Python
python3 模拟登录v2ex实例讲解
2017/07/13 Python
Python 比较两个数组的元素的异同方法
2017/08/17 Python
Python简单生成随机数的方法示例
2018/03/31 Python
对Python3 goto 语句的使用方法详解
2019/02/16 Python
Django+zTree构建组织架构树的方法
2019/08/21 Python
python logging.basicConfig不生效的原因及解决
2020/02/20 Python
PyQt5中QTableWidget如何弹出菜单的示例代码
2020/02/23 Python
python爬虫搭配起Bilibili唧唧的流程分析
2020/12/01 Python
filter使用python3代码进行迭代元素的实例详解
2020/12/03 Python
Html5跳转到APP指定页面的实现
2020/01/14 HTML / CSS
幼儿园托班开学寄语
2014/01/18 职场文书
大二自我鉴定
2014/01/31 职场文书
总经理司机岗位职责
2014/02/06 职场文书
社区戒毒工作方案
2014/06/04 职场文书
小学红领巾广播稿(3篇)
2014/09/13 职场文书
2014院党委领导班子及其成员群众路线对照检查材料思想汇报
2014/10/04 职场文书
2016年大学校运会广播稿件
2015/12/21 职场文书
市直属机关2016年主题党日活动总结
2016/04/05 职场文书
公务员的复习计划书,请收下!
2019/07/15 职场文书
MySQL中几种插入和批量语句实例详解
2021/09/14 MySQL