popen和pclose詳解及例項

2022-09-12 02:54:16 字數 1309 閱讀 7659

popen函式是標準c提供的乙個管道建立函式,其內部操作主

要是建立乙個管道,呼叫fork建立子程序,關閉不需用的檔案描述符,呼叫exec函式族執行popen的第乙個引數。然後等到關閉。

也就是說我們可以傳遞乙個命令(ls -l......)或乙個可執行程式。於pipe對比來說**相對少很多。

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

#include

file *popen(const char *command, const char *type);

1.command:shell命令或可執行程式名

2.type開啟方式,可模擬fopen函式

返回值:成功返回檔案指標,失敗返回null

int pclose(file *stream);

返回值:成功返回command終止狀態,失敗返回-1

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

例項:

實現從終端得到字元並將大寫轉換為小寫輸出。

分析: 編寫乙個程式實現從終端得到字元並處理過濾後寫入標準輸出,

然後編譯成可執行檔案。在另乙個程式呼叫popen去執行這個可執行程式。並從檔案流中讀取資料

**:1.filename: popen_filter.c

#include

#include

#include

#define maxline 1024

int main(void)

for (; ;)

} else

}if (pclose(fpin) == -1)

putchar('\n');

return exit_success;

}

2.filename: filter.c

#include

#include

#include

int main(void)

if (putchar(c) == eof)

if (c == '\n')

}return exit_success;

}

管道 popen與pclose(二)

includefile popen const char command,const char type 建立管道並啟動command的程序 type r 將呼叫程序讀進command的標準輸出 type w 將呼叫程序寫到command的標準輸入 注意 呼叫popen不對標準錯誤輸出做任何處理,只...

基於管道的popen和pclose函式

標準i o函式庫提供了popen函式,它啟動另外乙個程序去執行乙個shell命令列。這裡我們稱呼叫popen的程序為父程序,由popen啟動的程序稱為子程序。popen函式還建立乙個管道用於父子程序間通訊。子程序要麼從管道讀資訊,要麼向管道寫資訊,至於是讀還是寫取決於父程序呼叫popen時傳遞的引數...

基於管道的popen和pclose函式

標準i o函式庫提供了popen函式,它啟動另外乙個程序去執行乙個shell命令列。這裡我們稱呼叫popen的程序為父程序,由popen啟動的程序稱為子程序。popen函式還建立乙個管道用於父子程序間通訊。子程序要麼從管道讀資訊,要麼向管道寫資訊,至於是讀還是寫取決於父程序呼叫popen時傳遞的引數...