程序通訊:
終端:sigqueue:新的傳送訊號和訊息的函式類似於kill
無名管道:父子間mkfifo
守護程序:
會話:使用者
會話其:對應乙個使用者,從乙個使用者的登陸到登出
程序組:乙個會話其利誘多個程序組,乙個程序組分為多個程序
終端:乙個會話可以有乙個中斷或沒有,在有的前提下,所以就會有乙個千台程序組,所有的進成都依賴於該中斷,中斷關閉,程序都結束,
狀態裡代價好的是前台。
守護程序:
程序間通訊:
共享記憶體:速度快,記憶體裡開闢一塊共享空間,所有程序都可訪問
訊息佇列:緩衝區
訊號量級:
7500 + 1200 = 8700
ipc機制:posix機制
一. 共享記憶體
a) 對映機制
i. 將檔案對映為位址空間裡,對位址操作 實際 就是對檔案操作
ii. mmap(起始位址(null的話是系統分配),檔案長度,期待獲取的操作(讀寫執行),讀寫是否影響原始檔,檔案描述符,檔案起始偏移量)
--期待獲取的操作:執行(port_exec) 讀(port_read) 寫(port_write)
iii. 特別注意:對映的檔案裡不能為空,因為不能擴大原始檔,只能讀或修改,不能增加內容,不一定從頭開始對映,不一定全部對映
1. 開啟檔案
2. 檔案對映(不一定全部對映)
3. scanf memcpy è寫操作 mem標頭檔案:string
4. 解除對映mummap()
5. 關閉檔案
b) 鍵值:
i. 用於
標識共享記憶體、訊息佇列、訊號量集,保證不同的程序都能找到同乙個
ii.
建立:ftok
(路徑名,任意數
) 返回乙個整數,只要兩個引數相同,返回值就一樣
c) 建立共享記憶體,就像是全域性變數一樣,宣告(對映)後即可使用
d) 注意使用完畢以後要
解除對映
刪除共享記憶體 註冊退出函式
i. 建立: mid:共享記憶體專用id
mid=shmget(鍵值(ipc_private(0)只用於父子之間),大小,沒有的話新建)(新建或開啟)
iii. 寫入:memcpy();
v. 刪除:shmctl(mid,命令,buf(如果刪除這個引數為null)),所以mid得是全域性的
命令:ipc_stat獲取共享記憶體屬性(第三個引數) ipc_set修改共享記憶體 ipc_rmid刪除(第三個位null) (null)
e) ipcs用於檢視:三者的資源、
二. 訊號量集:用於同步和互斥
a) 當訪問共同資源的時候
訊號量:小於零的時候,才能訪問訊號兩級的id 第幾個(從零開始),命令
b) 開啟的時候為零。
c) cmd是執行的操作
d) 設定多個訊號量的操
三. 訊息佇列(佇列的使用,必須要遵循
先建立è傳送/接收è刪除
三步走一般用於傳送方和接收方速度不同步的情況,一般是接收方阻塞等待
a) b) ftok(「路徑」,整數) 返回值:key_t 即唯一的鍵值,用於標識訊息佇列和ipc
c) msgget(鍵值,操作)
1. 如果建立,ipc_creat
2. 如果要開啟,就0,
3. 返回值:開啟或者建立的訊息佇列的 id int型別的 開啟失敗
就-1d) msgctl(訊息佇列id ,
操作, null):常常用來刪除 佇列
1. 操作:ipc_rmid 標識刪除
e) msgsnd(佇列id ,結構體(訊息)的指標,訊息大小(
減去4以後
),阻塞(0)/非阻塞(ipc_nowait)):
1. 訊息結構體:struct msgp:
a) 第乙個成員固定為long型別的 mtype(訊息的型別,接收函式據此判斷是否接受) 好處是不同的程序可以共用乙個訊息佇列。
b) 實際的內容
其大小為
sizeof(msgp) – sizeof(long)
f) msgrcv(id ,接收結構體,大小,型別,是否阻塞): 從訊息佇列裡取出資訊
訊息型別一般指定為
0~5,
可用於不同的程序
程序間通訊的8種方式
無名管道 pipe 管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係的程序間使用。程序的親緣關係通常是指父子程序關係。高階管道 popen 將另乙個程式當做乙個新的程序在當前程式程序中啟動,則它算是當前程式的子程序,這種方式我們成為高階管道方式。有名管道 named pipe 有...
程序間的八種通訊方式
共享記憶體是最快的 ipc 方式 1.無名管道 pipe 管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係的程序間使用。程序的親緣關係通常是指父子程序關係。2.高階管道 popen 將另乙個程式當做乙個新的程序在當前程式程序中啟動,則它算是當前程式的子程序,這種方式我們成為高階管...
程序間通訊的8種方式
前言 程序通訊 每個程序各自有不同的使用者位址空間,任何乙個程序的全域性變數在另乙個程序中都看不到,所以程序之間要交換資料必須通過核心,在核心中開闢一塊緩衝區,程序a把資料從使用者空間拷到核心緩衝區,程序b再從核心緩衝區把資料讀走,核心提供的這種機制稱為程序間通訊。程序間通訊 ipc 介紹 程序間通...