pid_t waitpid( pid_t pid,
int * status, int options );
pid<-1 等待程序組識別碼為 pid 絕對值的任何子程序。
pid=-1 等待任何子程序,相當於 wait()。
pid=0 等待程序組識別碼與目前程序相同的任何子程序。
pid>0 等待任何子程序識別碼為 pid 的子程序。
options 選項中
wnohang若pid指定的子程序沒有結束,則waitpid()函式返回0,不予以等待。若結束,則返回該子程序的id。
pipe (無名管道) 只能在乙個程序中通訊;
與pipe 對應的
socketpair ( )
可以在不同程序間通訊 ;
任務1: tcp 實現程序池 ,先fork( ) 好一堆子程序,在客戶端來請求時,將資訊交給子程序處理;
int fds 父子程序見通訊的描述符
1. socketpair ( fds ) 建立父程序 與 子程序 間的通訊,將描述符放在 乙個陣列或者鍊錶中
一般存放 父程序的 由socketpair ( )建立的描述符合 , 在乙個flag 標誌,判斷子程序是否在工作
2. sendmsg 和 recvmsg 父程序只負責監聽客戶端的請求,每次客戶端來請求後,伺服器將 客戶端的fd_client描述符傳遞給 子程序, 這裡傳描述符(需要 sendmsg函式, 普通的send 不能傳 fd)
3. 伺服器中 利用 select 函式 ; 將伺服器中fd_listen 監聽 , 伺服器與子程序間的 fds(伺服器方的fds加入select )
在select中 ,當fd_listen 有訊號時,知道有新的客戶端來訪問,分配乙個子程序給客戶端;
在select中 ,當 伺服器與子程序的fds(群)中乙個有訊號時,知道是與之對應的子程序發來資訊(我們這裡約定,客戶端退出後,子程序沒活幹了發個訊號給伺服器,告訴伺服器子程序空閒了)
具體見 0905 號 **;
udp 則比較簡單
9 1 1 網路模型
9.1.1 osi七層模型。1.應用層 一般指應用程式,該層主要負責確定通訊物件。常用協議有ftp,http,snmp 2.表示層 資料的編碼和轉化,根據不同的應用目的將資料處理為不同格式,表現出各種副檔名。3.會話層 負責在網路中的兩個結點之間建立,維護,控制會話。提供單工,半雙工,全雙工 x,h...
2018 9 14 網路模型
物理層 利用傳輸介質為資料鏈路層提供物理連線,位元流傳輸 資料鏈路層 為網路層提供服務,解決兩個相鄰結點之間的通訊問題,負責透明傳輸資料幀,傳送的協議資料單元稱為資料幀,資料幀中包含實體地址 mac 控制碼 資料及校驗碼等資訊,該層的主要作用是通過校驗 確認和反饋重發手段,將不可靠的資料鏈路層轉換為...
6 1 網路應用模型
一 客戶 伺服器模型 在客戶 伺服器模型中,有乙個總是開啟的主機稱為伺服器,它服務於許多來自其他稱為客戶機 的主機請求。其工作流程如下 1 伺服器處於接收請求的狀態。2 客戶機發出服務請求,並等待接收結果。3 伺服器收到請求後,分析請求,進行必要的處理,得到結果並傳送給客戶機。客戶程式必須直到伺服器...