C語言:popen函數(shù)的使用_第1頁
C語言:popen函數(shù)的使用_第2頁
C語言:popen函數(shù)的使用_第3頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

C語?:popen函數(shù)的使?C語?:popen函數(shù)的使??、利?system函數(shù)調(diào)?shell命令,只能獲取到shell命令的返回值,?不能獲取shell命令的輸出結果,那如果想獲取輸出結果怎么辦呢??popen函數(shù)可以實現(xiàn)。?、定義函數(shù):FILE*popen(constchar*command,constchar*type);函數(shù)說明:popen()會調(diào)?fork()產(chǎn)??進程,然后從?進程中調(diào)?/bin/sh-c來執(zhí)?參數(shù)command的指令。參數(shù)type可使?"r"代表讀取,"w"代表寫?。依照此type值,popen()會建?管道連到?進程的標準輸出設備或標準輸?設備,然后返回?個?件指針。隨后進程便可利?此?件指針來讀取?進程的輸出設備或是寫?到?進程的標準輸?設備中。此外,所有使??件指針(FILE*)操作的函數(shù)也都可以使?,除了fclose()以外。返回值:若成功則返回?件指針,否則返回NULL,錯誤原因存于errno中.三、實例測試1、popen.c#include"stdio.h"#include"stdlib.h"intpopen_system(constchar*cmd,char*pRetMsg,intmsg_len){printf("\n\n________%s%dcmd=%s\n",__func__,__LINE__,cmd);FILE*fp;char*p=NULL;intres=-1;if(cmd==NULL||pRetMsg==NULL||msg_len<0){printf("ParamError!\n");return-1;}if((fp=popen(cmd,"r"))==NULL){printf("PopenError!\n");return-2;}else{memset(pRetMsg,0,msg_len);//getlastestresultwhile(fgets(pRetMsg,msg_len,fp)!=NULL){printf("Msg:%s",pRetMsg);//printallinfo}if((res=pclose(fp))==-1){printf("closepopenerror!\n");return-3;}//pRetMsg[strlen(pRetMsg)-1]='\0';pRetMsg[strlen(pRetMsg)]='\0';return0;}}}voidpopen_read(constchar*cmd){printf("\n\n________%s%dcmd=%s\n",__func__,__LINE__,cmd);FILE*fp;charbuf[200]={0};if((fp=popen(cmd,"r"))==NULL){perror("Failtopopen\n");exit(1);}while(fgets(buf,200,fp)!=NULL){printf("%s",buf);}pclose(fp);}voidpopen_write(constchar*cmd){printf("\n\n________%s%dcmd=%s\n",__func__,__LINE__,cmd);FILE*fp;charbuf[200]={0};if((fp=popen(cmd,"w"))==NULL){perror("Failtopopen\n");exit(1);}fwrite("Readpipesuccessfully!",1,sizeof("Readpipesuccessfully!"),fp);pclose(fp);}intmain(){char*cmd="who";chara8Result[128]={0};intret=0;inti=0;memset(a8Result,0,strlen(a8Result));ret=popen_system(cmd,a8Result,sizeof(a8Result));printf("ret=%da8Result=%slength=%d\n",ret,a8Result,strlen(a8Result));popen_read("./r

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論