UNIX環境變數 儲存對映I O

2021-10-04 22:20:19 字數 1297 閱讀 9913

儲存對映i/o可以將乙個磁碟檔案對映到乙個儲存空間的緩衝區上。於是,在從緩衝區讀資料時,相當於讀檔案,往緩衝區寫資料時,相當於寫檔案。這樣就可以在不使用read/write的情況下進行檔案i/o。在使用該功能之前,需要告訴核心將乙個指定的檔案對映到儲存區域。

mmap()函式將程序的虛擬位址空間與檔案fd建立對映關係,這樣程序就可以像訪問記憶體一樣,訪問檔案了。

#include void* mmap(void* start,size_t length,int prot,int flags,int fd,off_t offset);

/*引數說明如下:

length:儲存區的長度

fd:對映檔案的檔案描述符

offset:對映檔案的起始偏移量

prot:指定對映區的讀寫許可權,注意此許可權不能高於檔案的許可權。

取值為(prot_read:可讀、prot_write:可寫、port_exec:可執行、prot_none:不可訪問)

flags:指明儲存區的各種屬性:

map_fixed:若start為非null,則對映儲存區的起始位址一定是start

map_share:若對儲存區修改相當於對檔案修改

map_private:對儲存區修改,將會產生乙個副本,即不影響原檔案。*/

此外,一般mmap()函式常與munmap()、msync()結合一起使用,函式宣告如下:

#includeint mprotect(void* addr,ssize_t len.int port);/*修改儲存區許可權*/

int msync(const void* start,length,int flags);/* 立即將記憶體修改內容寫入檔案 */

/*flags選項如下,必須指定ms_async或ms_async,ms_invalidate為可選項:

ms_async: 請核心盡快將修改寫入檔案

ms_sync : 在此函式返回前,將修改寫入到檔案

ms_invalidate:通知作業系統丟棄指定範圍內的所有頁內容*/

int munmap(void* start,size_t length); /* 解除對映 */

/*程序結束將會解除儲存區的對映關係,因為即使檔案關閉,並不會解除其對映*/

Unix環境變數 POSIX非同步I O

非同步 i o 是針對同步 i o 提出的概念,它不需要執行緒等待 i o 結果,而只需要請求進行傳輸,然後系統會自動完成 i o 傳輸,結束或者出現錯誤時會產生相應的 i o 訊號,使用者程式只需要設定好對應的訊號陷入函式,即可處理乙個非同步 i o 事件。include struct aiocb...

Unix 環境變數

linux 下處理環境變數常見的幾個操作 env 顯示當前所有的環境變數 set 顯示當前bash下使用者自定義的變數和環境變數 export 把自定義的變數轉換成環境變數 環境表 unix 下的每乙個程式都會有一張環境表,其實我們可以想象,main函式使如下這種形式 int main int ar...

Unix環境變數 執行緒基礎

標頭檔案 include 返回值 若相等則返回非0值,否則返回0值 作用 判斷兩個執行緒id是否相等 pthread t pthread self void 標頭檔案 include 返回值 呼叫執行緒自身的執行緒id intpthread create pthread t tidp,const p...