1.目的:
(1)資料傳輸:乙個程序需要將他的程序資料傳送給另乙個程序。
(2)資源共享:多個程序之間共享同樣的資源。
(3)通知事件:乙個程序需要向另乙個或一組程序傳送訊息,通知他們發生了某種事件。
(4)程序控制:有些程序希望完全控制另乙個程序的執行(如debug程序),此時控制程序希望能夠攔截另乙個程序的所有操作,並能夠及時知道它的狀態改變。
2.管道通訊
(1)管道是單向的,先進先出,它把乙個程序的輸出和另乙個程序的輸入連線在一起;
(2)乙個程序在管道的尾部寫入資料,另乙個程序從管道頭部讀出資料;
(3)資料被乙個程序讀出後,將被從管道中刪除,其他讀程序將不能讀到這些資料;
(4)管道提供了簡單的流控制機制,程序試圖讀空管道時,程序將阻塞,同樣,管道已經滿時,程序再試圖向管道寫入資料,程序將阻塞。
(5)管道包括無名管道和有名管道兩種管道包括無名管道和有名管道兩種,前者用於父程序和子程序間的通訊,後者可用於執行於同一系統中的任意兩個程序間的通訊。
3.訊號通訊
訊號機制是unix系統中最為古老的程序間通訊機制,很多條件可以產生乙個訊號:
(1)當使用者按某些按鍵時,產生訊號;
(2)硬體異常產生訊號:除數為0、無效的儲存訪問等等。這些情況通常由硬體檢測到,將其通知核心,然後核心產生適當的訊號通知程序,例如,核心對正訪問乙個無效儲存區的程序產生乙個sigsegv訊號;
(3)程序用kill函式將訊號傳送給另乙個程序;
(4)使用者可用kill命令將訊號傳送給其他程序。
4.下面是幾種常見的訊號:
sighup: 從終端上發出的結束訊號
sigint: 來自鍵盤的中斷訊號(ctrl-c)
sigkill:該訊號結束接收訊號的程序,殺死程序
sigterm:kill 命令發出的訊號
sigchld:子程序停止或結束時通知父程序
sigstop:來自鍵盤(ctrl-z)或除錯程式的停止執行訊號,暫停程序
5.訊號處理
(1)忽略此訊號
大多數訊號都按照這種方式進行處理,但有兩種訊號決不能被忽略,它們是:
sigkill\sigstop。
這兩種訊號不能被忽略的原因是:
它們向超級使用者提供了一種終止或停止程序的方法;
(2)執行使用者希望的動作通知核心在某種訊號發生時,呼叫乙個使用者函式。在使用者函式中,執行使用者希望的處理;
(3)執行系統預設動作
對大多數訊號的系統預設動作是終止該程序。
程序的一些基本概念
1.程序可以 2.關於建立程序 使用createprocess函式建立乙個程序,函式原型為 bool createprocess lptstr lpcommandline,lpsecurity attributes lpprocessattributes,lpsecurity attributes ...
網路通訊的一些基本概念
最初由四個位元組,四個字點表示 130.207.244.244 ipv4 fe8o fcfd 4aff fecf ea4e ipv6 不便記憶,所以常用主機名 hostname 代替 127.由本地程式使用16即位掩碼,表示該子網內部ip位址前16位要一致 5.資料報分組 df標記 don t fr...
有關程序的一些基本概念
對程序的初步描述 一.和程序有關的一些概念 乙個程序就是乙個正在執行程式的例項,包括程式計數器,暫存器和變數的當前值。從概念上說,每個程序擁有它自己的虛擬cpu,當然真實的cpu在各個程序之間來回切換。在某一瞬間,cpu只能執行乙個程序,但在一秒鐘時間他可以執行多個程序,這一就產生了並行的錯覺,通產...