匿名管道 中的 單工通道(popen)

2021-07-31 22:40:39 字數 1569 閱讀 3415

啟動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企業將自己公司的客服分為兩個客服組,售後客服組與技術支援客服組。當工單是普通諮詢問題時,售後客服能夠自己處理,那麼,可以將工單分配給 售後客戶組 受理客服...