linux 程序間通訊綜述

2021-06-28 09:22:07 字數 3112 閱讀 5473

linux程序間通訊主要分為以下4個領域

(1)訊息傳遞(管道,fifo,訊息佇列)

(2)同步(互斥鎖,條件變數,讀寫鎖,訊號量)

(3)共享記憶體區(匿名共享記憶體區,有名共享記憶體區)

(4)過程呼叫(solaris門,sun rpc)

linux程序間的資訊共享可以分為

(1) 基於檔案系統的共享

(2) 基於核心的共享

(3) 基於共享記憶體區的共享

ipc物件的持續性

(1)隨程序間持續的ipc物件一直存在到開啟著該物件的最後乙個程序關閉該物件的最後乙個程序關閉該物件為止。

(2)隨核心持續的ipc物件一直存在到核心重新自舉或顯式刪除該物件為止。

(3)隨檔案系統持續的ipc物件一直存在到顯示刪除該物件為止。即使系統自舉了,該物件還是存在的。

ipc型別                                       持續性

管道                                           隨程序

fifo                                          隨程序

posix互斥鎖                                 隨程序

posix條件變數                              隨程序

posix讀寫鎖                                 隨程序

fcntl記錄上鎖                                隨程序

posix訊息佇列                              隨核心

posix有名訊號量                           隨核心

posix基於記憶體的訊號量                   隨程序

posix共享記憶體區                           隨核心

system v訊息佇列                        隨核心

system v訊號量                           隨核心

system v共享記憶體區                     隨核心

tcp套接字                                  隨程序

udp套接字                                  隨程序

unix域套接字                               隨程序

名字空間:

當兩個或多個無親緣關係的程序使用某種型別的ipc物件來彼此交換資訊時,該ipc物件必須有乙個某種形式的名字或者識別符號,這樣其中乙個程序(往往是伺服器)可以建立該ipc物件,其餘程序則可以指定同乙個ipc物件。

ipc型別                        用於開啟或建立ipc的名字空間                ipc開啟後的標識

管道                                     沒有名字                                      描述符

fifo                                    路徑名                                         描述符

posix互斥鎖                          沒有名字                                      pthread_mutex_t指標

posix條件變數                       沒有名字                                      pthread_cond_t指標

posix讀寫鎖                          沒有名字                                      pthread_rwlock_t指標

fcntl記錄上鎖                        路徑名                                         描述符

posix訊息佇列                       posix ipc名字                              mqd_t值

posix有名訊號量                    posix ipc名字                              sem_t指標

posix基於記憶體的訊號量            沒有名字                                     sem_t指標

posix共享記憶體區                    posix ipc名字                              描述符

system v訊息佇列                key_t鍵                                       system v ipc識別符號

system v 訊號量                  key_t鍵                                       system v ipc識別符號

system v共享記憶體區              key_t鍵                                      system v ipc 識別符號

門                                      路徑名                                         描述符

sun rpc                             程式/版本                                     rpc控制代碼

tcp套接字                            ip位址與tcp 埠                         描述符

udp套接字                           ip位址與udp埠                          描述符

unix域套接字                        路徑名                                        描述符   

linux程序間通訊綜述

linux程序間通訊綜述 linux程序間通訊主要分為以下4個領域 1 訊息傳遞 管道,fifo,訊息佇列 2 同步 互斥鎖,條件變數,讀寫鎖,訊號量 3 共享記憶體區 匿名共享記憶體區,有名共享記憶體區 4 過程呼叫 solaris門,sun rpc linux程序間的資訊共享可以分為 1 基於檔...

程序間通訊方式 綜述

linux程序間一共有六種通訊方式 1.管道 無名管道 pipe 和有名管道 fifo 2.訊號 signal 3.訊號量 semaphore 4.訊息佇列 messagequeue 5.共享記憶體 shared memory 6.套接字 socket 1.管道 管道分為無名管道 pipe 和有名管...

Linux程序間通訊

程序間通訊 ipc interprocess communication 基本機制 訊號 管道及命名管道 訊息佇列 共享主存 訊號量 套接字。訊號 全稱軟中斷訊號,是在軟體層次上對中斷機制的一種模擬,它也是程序間通訊機制中唯一的非同步通訊機制。linux訊號處理函式可分為訊號安裝函式 訊號傳送函式和...