使用popen函式實現分頁顯示

2021-06-09 14:11:49 字數 594 閱讀 1648

#include #include #include "apue.h"

#include #include #include #include #include #include #define pager "$"

int

main(int argc , char *argv)

if(ferror(fpin))

err_sys("fgets errr");

if(pclose(fpout)<0)

err_sys("pclose err");

exit(0);

}

對於popen(char *cmd,int char type)而言,其先定義乙個管道pfd,然後建立子程序,在子程序裡面,當type為"r"的時候,使用pfd[0]為stdout_fileno,返回fpout=pfd[1],這樣在父程序裡面向fpout裡面寫資料,則在子程序裡面,相當於給起標準輸入寫東西,然後子程序讀取這些輸入,並呼叫bash程式執行第乙個引數cmd

以上程式實現了分頁顯示。

自己實現popen函式

閒來無事,自己實現了popen函式mypopen,後來檢視了popen函式的原始碼發現自己實現的與其相差無幾,本函式與linux中的實現最大的不同是不需要用專門的pclose 函式來關閉檔案指標,用普通的fclose 即可,linux實現的 也會給出在下文,可以對比一下其中差異。主要通過pipe管道...

popen函式的實現

注 本文 本人有修改對 open max 的呼叫 popen函式的實現包括一下幾步 1 使用pipe 建立管道 2 使用fork 建立子程序 3 在子程序中呼叫exec族函式執行命令,通過管道將結果傳送至父程序 4 在主程序中等待子程序執行,子程序執行完成後將接收其結果,返回結果的檔案指標 類似與s...

popen函式的實現

popen函式的實現包括一下幾步 1 使用pipe 建立管道 2 使用fork 建立子程序 3 在子程序中呼叫exec族函式執行命令,通過管道將結果傳送至父程序 4 在主程序中等待子程序執行,子程序執行完成後將接收其結果,返回結果的檔案指標 類似與system fork與exec函式的組合 pope...