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全局变量用法实例分析
Jul 19 Python
python用模块zlib压缩与解压字符串和文件的方法
Dec 16 Python
Django中login_required装饰器的深入介绍
Nov 24 Python
Python3 中把txt数据文件读入到矩阵中的方法
Apr 27 Python
python实现动态数组的示例代码
Jul 15 Python
python中类的输出或类的实例输出为这种形式的原因
Aug 12 Python
如何使用python进行pdf文件分割
Nov 11 Python
python科学计算之narray对象用法
Nov 25 Python
Python优秀开源项目Rich源码解析的流程分析
Jul 06 Python
python-图片流传输的思路及示例(url转换二维码)
Dec 21 Python
pytorch 权重weight 与 梯度grad 可视化操作
Jun 05 Python
Python函数中的不定长参数相关知识总结
Jun 24 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
解析使用substr截取UTF-8中文字符串出现乱码的问题
2013/06/20 PHP
PHP抓屏函数实现屏幕快照代码分享
2014/01/02 PHP
php使用fullcalendar日历插件详解
2019/03/06 PHP
offsetParent 算法分析
2010/04/05 Javascript
JavaScript实现在数组中查找不同顺序排列的字符串
2014/09/26 Javascript
JavaScript实现跨浏览器的添加及删除事件绑定函数实例
2015/08/04 Javascript
JS实现的车标图片提示效果代码
2015/10/10 Javascript
关于JS中的apply,call,bind的深入解析
2016/04/05 Javascript
Bootstrap模态框案例解析
2017/03/05 Javascript
JavaScript实现滑动导航栏效果
2017/08/30 Javascript
node中的密码安全(加密)
2018/09/17 Javascript
详解服务端预渲染之Nuxt(介绍篇)
2019/04/07 Javascript
微信小程序使用websocket通讯的demo,含前后端代码,亲测可用
2019/05/22 Javascript
2020京东618叠蛋糕js脚本(亲测好用)
2020/06/02 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
2020/09/21 Javascript
electron踩坑之dialog中的callback解决
2020/10/06 Javascript
[01:12:27]EG vs Secret 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
python通过scapy获取局域网所有主机mac地址示例
2014/05/04 Python
python数据清洗系列之字符串处理详解
2017/02/12 Python
使用python为mysql实现restful接口
2018/01/05 Python
Windows下Python3.6安装第三方模块的方法
2018/11/22 Python
对python读取zip压缩文件里面的csv数据实例详解
2019/02/08 Python
Python实现微信中找回好友、群聊用户撤回的消息功能示例
2019/08/23 Python
Python标准库:内置函数max(iterable, *[, key, default])说明
2020/04/25 Python
Python调用飞书发送消息的示例
2020/11/10 Python
学习新党章思想汇报
2014/01/09 职场文书
员工薪酬福利制度
2014/01/17 职场文书
企业办公室岗位职责
2014/03/12 职场文书
春风行动实施方案
2014/03/28 职场文书
对祖国的寄语大全
2014/04/11 职场文书
法制宣传月活动总结
2014/04/29 职场文书
2014年师德承诺书
2014/05/23 职场文书
上课说话检讨书500字
2014/11/01 职场文书
技术员个人工作总结
2015/03/03 职场文书
房屋质量投诉书
2015/07/02 职场文书
学校标语口号大全
2015/12/26 职场文书