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