首页 > 系统服务 > 详细

两个很有用的进程间通信函数popen,pclose

时间:2015-07-13 12:15:32      阅读:208      评论:0      收藏:0      [点我收藏+]

                                     两个很有用的进程间通信函数popen,pclose

  今天起的比较晚,然后来了也不想复习,还是看书学习--写代码--写博客有意思,不敢说有多精通,至少每天都在学习新知识,不求立刻完全消化,但求每天有进步。

  现在就看看这两个函数,其实都是创建一个管道到子进程,但是使用这两个函数要比昨天使用pipe() 函数简单的多。

      #include <stdio.h>
       FILE *popen(const char *command, const char *type);
       int pclose(FILE *stream);

       函数原型参上。popen 函数有两个参数,第一个是执行的可执行程序,这个函数首先会调用fork( )然后调用exec( )函数执行这个可执行文件。然后还有一个参数,有两个选项(r & w). r :将返回的文件指针连接到可执行程序的标准输出,w:将返回的文件指针连接到可执行文件的标准输入。

      

#include<stdio.h>
#include<apue.h>
#include<sys/wait.h>
#include<unistd.h>
#define PAGER "${PAGER:-more}"
#define MAXLINE 255
int main(int argc,char **argv)
{
    char line[MAXLINE];
    FILE *fpin,*fpout;

    if(argc != 2){
        printf("plesase enter the Pathname\n");
    }
    if((fpin = fopen(argv[1],"r")) == NULL){
        printf("can not open \n");
    }
    if((fpout = popen(PAGER,"w")) == NULL){
        printf("popen error\n");
    }

    while(fgets(line,MAXLINE,fpin) != NULL){
        if(fputs(line,fpout) == EOF){
            printf("fputs error\n");
        }
    }

    if(ferror(fpin)){
        printf("fgets error\n");
    }
    if(pclose(fpout) == -1){
        printf("pclose error\n");
    }
    exit(0);
}
首先我们应当在本地创建一个文本文件随便写入一些东西,然后传给这个程序,这个程序调用本身的more 分页程序,将文本里的东西分页显示在终端上。

版权声明:本文为博主原创文章,未经博主允许不得转载。

两个很有用的进程间通信函数popen,pclose

原文:http://blog.csdn.net/zmrlinux/article/details/46859579

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!