unix環境高階程式設計 程序間通訊(2)

2021-07-16 08:23:25 字數 987 閱讀 9826

函式popen和pclose:

常見的操作是建立乙個連線到另乙個程序的管道,然後讀其輸出或向其輸入端傳送資料,這兩個函式實現的操作是:建立乙個管道,fork乙個子程序,關閉未使用的管道端,執行乙個shell執行命令,然後等待命令終止。

函式popen執行fork,呼叫exec執行cmdstring,返回乙個標準io檔案指標,如果type是r,則檔案指標連線到cmdstring的標準輸出,而如果type是w,則檔案指標連線都cmdstring的標準輸入,這兩者情況如下圖所示

這種情況和fopen類似,如果type是r,則返回的檔案指標是可讀的,如果type是w,則是可寫的。

pcolse函式關閉標準io流,等待命令終止,然後返回shell終止狀態。

協同程序:

unix系統過濾程式從標準輸入讀取資料,向標準輸出寫資料,幾個過濾程式通常在shell管道中線性連線,當乙個過濾程式既產生某個過濾程式的輸入,又讀取該過濾程式的輸出時,它就變成了協同程序。

fifo是一種檔案型別,通過stat結構的st_mode成員的編碼可以知道是否是fifo型別。

mkfifo函式中mode引數的規格說明和open函式的mode相同

mkfifoat函式和mkfifo類似,但是mkfifoat函式可以被用來在fd檔案描述符表示的目錄相關位置建立乙個fifo。

fifo有以下兩種用途:

1.shell命令使用fifo將資料從一條管道傳送到另一條時,無需建立中間臨時檔案。

2.客戶程序-伺服器程序應用程式中,fifo用作匯聚點,在客戶程序和伺服器程序兩者之間傳遞資料。

《UNIX環境高階程式設計》十七高階程序間通訊讀書筆記

unix域套接字用於在同一臺計算機上執行的程序之間的通訊。unix域套接字提供流和資料報兩種介面。unix域資料報服務是可靠的,既不會丟失報文也不會傳遞出錯。使用socketpair函式來建立一對無命名的 相互連線的unix域套接字。include int socketpair int domain...

UNIX環境C語言程式設計 13 高階程序間通訊

1 unix 域的socket 與internet 域的socket 機制相比,unix 域的socket 更有效 1 無需執行協議處理 2 無需計算校驗和 3 無需產生順序號 4 無需確認 缺點是,只能在同乙個主機上通訊 先看一下 socketpair 函式,建立一對連線的 unix 域socke...

Unix環境程序間通訊(二)

struct shmid ds struct ipc perm 4.4 include include 開啟建立儲存段 int shmget key t key,size t size,int shm 返回 失敗 1,成功返回非負的共享儲存段 id 第乙個引數 key是共享儲存關鍵字。它有特殊值 i...