1.管道/匿名管道pipe
管道可用於具有親緣關係程序間的通訊信,允許乙個程序和另乙個與他有共同祖先的程序之間進行通訊。管道是單向的,如果乙個程序既要讀又要寫,需要建立兩根管道。
2.命名管道fifo
命名管道克服了管道沒有名字的限制,因此,除了具有管道所有的功能外,它還允許無親緣關係程序間的通訊。命名管道在檔案系統中有對應的檔名。命名管道通過命令mkfifo或系統呼叫mkfifo來建立。
3.訊號signal
訊號是比較複雜的通訊方式,用於通知接受程序有某種事件發生,除了用於程序間通訊外,程序可以傳送訊號給程序本身。
4.訊息佇列messagequeue
訊息佇列是訊息的鏈結表,包括posix訊息佇列,system v訊息佇列。有足夠許可權的程序可以向佇列中新增訊息,被賦予許可權的程序則可以讀走佇列中的訊息。訊息佇列克服了訊號承載資訊量少,管道只能承載無格式位元組流以及緩衝區大小受限等缺陷。
5.共享記憶體shared memory
使得多個程序可以訪問同一塊空間,是最快的ipc形式。針對其他通訊機制執行效率較低而設計的。往往與其他的通訊機制,如訊號量結合使用,來達到程序間的同步和互斥。
記憶體對映允許多個程序間通訊,每乙個使用該機制的程序通過把乙個共享的檔案對映到自己的程序位址空間來實現它。因此不必使用檔案i/o操作,只需要簡單的指標操作就可以讀寫和修改內容。
7.訊號量semaphore
用於程序間以及一些執行緒間的同步手段
8.套接字(socket)
更為一般的程序間通訊機制,可用於不同機器之間的程序間通訊。
程序間的通訊方式,執行緒間的通訊方式 程序
當時做筆記的時候 忘了在 看到的了,有時間我再研究研究 管道 pipe 管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係的程序間使用。程序的親緣關係通常是指父子程序關係。有名管道 namedpipe 有名管道也是半雙工的通訊方式,但是它允許無親緣關係程序間的通訊。訊號量 semo...
程序間通訊的方式?執行緒間通訊的方式?
管道 命名管道 訊號量 訊息佇列 訊號及共享記憶體只適用於本地程序間通訊,套接字則可用於遠端通訊,因而一般用於網路程式設計。部分概念解釋 匿名管道是在快取中開闢的輸出和輸入檔案流的空間,只能用於父子關係的程序之間。因為父子程序的輸入和輸出檔案描述符是一致的。命名管道是一種實際存在的fifo檔案,稱作...
程序間通訊方式
謝謝作者 用於程序間通訊 ipc 的四種不同技術 共享記憶體,臨界區,管道,訊息 1.訊息傳遞 管道,fifo,posix和system v訊息佇列 2.同步 互斥鎖,條件變數,讀寫鎖,檔案和記錄鎖,posix和system v訊號燈 3.共享記憶體區 匿名共享記憶體區,有名posix共享記憶體區,...