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中映射类型的内建函数和工厂函数
Aug 19 Python
kaggle+mnist实现手写字体识别
Jul 26 Python
Python http接口自动化测试框架实现方法示例
Dec 06 Python
Django框架使用mysql视图操作示例
May 15 Python
python实现比较类的两个instance(对象)是否相等的方法分析
Jun 26 Python
Ubuntu+python将nii图像保存成png格式
Jul 18 Python
关于torch.optim的灵活使用详解(包括重写SGD,加上L1正则)
Feb 20 Python
python3.8.1+selenium实现登录滑块验证功能
May 22 Python
Python基于Twilio及腾讯云实现国际国内短信接口
Jun 18 Python
Python调用OpenCV实现图像平滑代码实例
Jun 19 Python
Tensorflow与Keras自适应使用显存方式
Jun 22 Python
Python用来做Web开发的优势有哪些
Aug 05 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中判断文件空目录是否有读写权限的函数代码
2012/08/07 PHP
深入PHP运行环境配置的详解
2013/06/04 PHP
ThinkPHP自动填充实现无限级分类的方法
2014/08/22 PHP
PHP中feof()函数实例测试
2014/08/23 PHP
php基于socket实现SMTP发送邮件的方法
2015/03/05 PHP
PHP读书笔记_运算符详解
2016/07/01 PHP
Yii2 queue的队列使用详解
2019/07/19 PHP
Prototype使用指南之base.js
2007/01/10 Javascript
开发 Internet Explorer 右键功能表(ContextMenu)
2013/07/03 Javascript
Js中使用hasOwnProperty方法检索ajax响应对象的例子
2014/12/08 Javascript
JS实现CheckBox复选框全选、不选或全不选功能
2020/07/28 Javascript
javascript基本算法汇总
2016/03/09 Javascript
javascript之with的使用(阿里云、淘宝使用代码分析)
2016/10/11 Javascript
vue.js表格组件开发的实例详解
2016/10/12 Javascript
JS字符串false转boolean的方法(推荐)
2017/03/08 Javascript
浅谈vue单一组件下动态修改数据时的全部重渲染
2018/03/01 Javascript
详解关于vue2.0工程发布上线操作步骤
2018/09/27 Javascript
Vue.use()在new Vue() 之前使用的原因浅析
2019/08/26 Javascript
vue实现弹幕功能
2019/10/25 Javascript
vue项目使用$router.go(-1)返回时刷新原来的界面操作
2020/07/26 Javascript
封装Vue Element的table表格组件的示例详解
2020/08/19 Javascript
python list使用示例 list中找连续的数字
2014/01/27 Python
python通过字典dict判断指定键值是否存在的方法
2015/03/21 Python
python中的常量和变量代码详解
2018/07/25 Python
css3动画 小球滚动 js控制动画暂停
2019/11/29 HTML / CSS
用html5实现语音搜索框的方法
2014/03/18 HTML / CSS
荷兰男士时尚网上商店:Suitable
2017/12/25 全球购物
Hotter Shoes美国官网:英国最受欢迎的舒适鞋
2018/08/02 全球购物
联想新西兰官方网站:Lenovo New Zealand
2018/10/30 全球购物
幼儿园中秋节活动方案
2014/02/06 职场文书
高中学生期末评语
2014/04/25 职场文书
新书发布会策划方案
2014/06/09 职场文书
赔偿协议书
2015/01/27 职场文书
2019最新劳动仲裁申请书!
2019/07/08 职场文书
vue中data改变后让视图同步更新的方法
2021/03/29 Vue.js
Python中的min及返回最小值索引的操作
2021/05/10 Python