程序間通訊 檔案對映與控制代碼繼承

2021-06-20 12:26:25 字數 633 閱讀 4820

程序間通訊有多種方法,其中常用的一種便是檔案對映。

往往在不同專案中對檔案對映的使用策略也不一樣,這裡拿一種常遇到的情況來說明需要注意的。例如:a程序(system許可權)含有網路模組,負責與伺服器通訊,而b程序(任意使用者)負責實時收集資料,由於b程序處於任意使用者,不能確保它是否能與伺服器通訊,當不能時便要將資料給a程序處理。(條件苛刻,只能用檔案對映時。)

需要注意的問題:1、高許可權下建立的檔案對映低許可權如何開啟。

2、程序間如何同步。

對於第二個問題,程序間同步,a程序建立鏈結、關閉、傳送、接收等事件物件(還會有很多),將控制代碼索引儲存在檔案對映內,並建立b程序繼承控制代碼,建立時同樣需要設定它們的security_attributes,給b程序提供乙個虛擬網路類,當b程序需要鏈結伺服器,便通過事件告訴a程序進行鏈結,其他同理。

例如a程序:

typedef struct _map_data_

map_data,*pmap_data;

haddress = (pmap_data)mapviewoffile(hmap, ....);

void initmapandevent()

dword winapi relconect::conectthread(lpvoid lpparam)

}

程序間通訊 檔案鎖

int flock int fd,int operation 其中,引數 fd 表示檔案描述符 引數 operation 指定要進行的鎖操作,該引數的取值有如下幾種 lock sh,lock ex,lock un 和 lock mand 通常情況下,如果加鎖請求不能被立即滿足,那麼系統呼叫 floc...

記憶體檔案對映 程序間通訊

記憶體對映檔案可以分為兩種 一種是普通的檔案,它需要乙個普通的檔案控制代碼,用於快速的讀寫檔案,這種檔案的資料在程序退出後會儲存在硬碟上,所以程序在下次執行時可以得到之前的資料 另一種是頁檔案,當建立記憶體對映檔案的時候傳入無效的控制代碼,這時會把頁檔案當作臨時的共享儲存空間,當程序退出後這些資料是...

linuxC多程序通訊 檔案鎖

英文名 file lock,在同一時刻只允許乙個程序對檔案進行訪問 建議性鎖 advisory locking,又稱協同鎖 核心只提供加減鎖以及檢測是否加鎖,不提供鎖的控制與協調工作 需要多程序相互檢測確認的加鎖機制 a程序對乙個操作的檔案加了鎖 b程序同樣可以對該檔案進行讀寫操作 只有當b程序也對...