啟動shell和命令兩個程序,從命令程序中讀/寫檔案流。
解決exec和system無返回輸出資料問題。
方便使用系統自帶功能,並可以執行比較複雜的shell。
預設啟動兩個程序,效率較低。
file* popen(const char *command, const char *open_mode);
引數:command:
命令列字串。
open_mode:
唯讀「r」
只寫「w」
返回值:
檔案描述符。(開啟失敗返回null)
int pclose(file* stream); 引數
stream:
檔案描述符。
返回值:
-1失敗
0成功size_t fread(void *buffer, size_t size, size_t count, file* stream);
引數:buffer:
用於接收資料的記憶體位址。
size:
讀取每個資料項的位元組數。(每個資料所佔位元組數)
count:
需要讀取的資料項個數。
ps:一共要讀取size*count個位元組數。
要讀取的資料項如果少於count,則有多少讀多少,大於則唯讀count個。
stream:
輸入的檔案指標。
返回值:
>count出錯
正數真實讀取的資料項個數(注:和size無關,只是count的值)
size_t fwrite(const void *buffer, size_t size, size_t count, file* stream);
引數:buffer:
寫入資料的記憶體位址。
size:
寫入資料項的位元組數。(每個資料所佔位元組數)
count:
需要寫入的資料項個數。
ps:一共要寫入size*count個位元組數。
要寫入的資料項如果少於count,則有多少寫多少;大於則只寫入count個。
stream:
目標檔案指標。
返回值:
>count出錯
正數實際寫入的資料項個數(注:和size無關,只是count的值)
linux中匿名管道和命名管道
1 建立管道和父子程序,子程序關閉讀端,父程序關閉寫端,子程序寫,父程序讀。2 如果所有指向管道寫端的檔案描述符都關閉了 管道寫端的引用計數等於0 而仍然有程序 從管道的讀端讀資料,那麼管道中剩餘的資料都被讀取後,再次read會返回0,就像讀到檔案末尾一樣。3 如果有指向管道寫端的檔案描述符沒關閉 ...
管道 通道 管程的區別
1 管道 說法一 乙個程式的輸出可以作為另乙個程式的輸入。這樣可以將多個程式串在一起,將簡單的任務組合,處理更大更複雜的問題,unix中有這種技術。說法二 把第一條命令的輸出作為第二條命令的輸入,如此進行連線的技術。2 通道 與i o有關。3 管程 說法一 代表共享資源的資料結構,以及由對該共享資料...
工單系統中工單的分配及流轉
工單系統中的工單需要客服來進行處理,負責處理工單的受理客服組和受理客服聯合起來,被稱為工單受理人。為了便於管理,需要將客服按照業務進行分組,比如a企業將自己公司的客服分為兩個客服組,售後客服組與技術支援客服組。當工單是普通諮詢問題時,售後客服能夠自己處理,那麼,可以將工單分配給 售後客戶組 受理客服...