两个很有用的进程间通信函数popen,pclose
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?兩個很有用的進程間通信函數(shù)popen,pclose
? 今天起的比較晚,然后來了也不想復習,還是看書學習--寫代碼--寫博客有意思,不敢說有多精通,至少每天都在學習新知識,不求立刻完全消化,但求每天有進步。
? 現(xiàn)在就看看這兩個函數(shù),其實都是創(chuàng)建一個管道到子進程,但是使用這兩個函數(shù)要比昨天使用pipe() 函數(shù)簡單的多。
??? ? #include <stdio.h>
? ? ? ?FILE *popen(const char *command, const char *type);
? ? ? ?int pclose(FILE *stream);
? ? ? ?函數(shù)原型參上。popen 函數(shù)有兩個參數(shù),第一個是執(zhí)行的可執(zhí)行程序,這個函數(shù)首先會調(diào)用fork( )然后調(diào)用exec( )函數(shù)執(zhí)行這個可執(zhí)行文件。然后還有一個參數(shù),有兩個選項(r & w). r :將返回的文件指針連接到可執(zhí)行程序的標準輸出,w:將返回的文件指針連接到可執(zhí)行文件的標準輸入。
? ? ??
#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); } 首先我們應當在本地創(chuàng)建一個文本文件隨便寫入一些東西,然后傳給這個程序,這個程序調(diào)用本身的more 分頁程序,將文本里的東西分頁顯示在終端上。版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。
轉(zhuǎn)載于:https://www.cnblogs.com/zmrlinux/p/4921404.html
總結(jié)
以上是生活随笔為你收集整理的两个很有用的进程间通信函数popen,pclose的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 找点
- 下一篇: 静态页面之间的转发与json与ajax做