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時傳遞的引數...