天天看點

使用mmap将檔案映射到虛拟位址空間進行操作

使用mmap将檔案映射到程序的虛拟位址空間,對記憶體的操作,直接反應到檔案中。

相關概念:

代碼參考:

執行驗證

代碼擷取檔案的中繼資料

檔案的中繼資料

相關使用函數

代碼實作

執行

Linux od指令用于輸出檔案内容。

od指令會讀取所給予的檔案的内容,并将其内容以八進制字碼呈現出來。

void *mmap(void *addr, size_t length, int prot, int flags,int fd, off_t offset);

頭檔案需要包含<sys/mman.h>

功能:映射檔案或裝置到記憶體空間

參數:

addr:映射後的虛拟位址空間的位址(一般為NULL)

length:映射的長度

prot:

PROT_NONE Pages may not be accessed.

PROT_EXEC Pages may be executed.

PROT_READ Pages may be read.

PROT_WRITE Pages may be written.

flags:

MAP_SHARED:

MAP_PRIVATE:

MAP_ANONYMOUS: 不支援檔案映射

fd:-1

offset:0

傳回值:

MAP_FAILED 錯誤 errno被設定

成功傳回映射區域的位址

int munmap(void *addr, size_t length);

功能:解除記憶體映射

addr:是mmap(2)的傳回值

length:同mmap(2)函數中的length

0 成功

-1 失敗 errno被設定

使用mmap将檔案映射到虛拟位址空間進行操作

檔案的中繼資料就是檔案的屬性,使用

使用mmap将檔案映射到虛拟位址空間進行操作

如何擷取一個檔案的中繼資料?

使用系統調用stat(2)擷取檔案的中繼資料。

如何将uid的數字轉換為使用者的名字?

getpwuid(3)

/etc/passwd檔案的内容

這個檔案裡存放的是系統的所有使用者的資訊。

如何通過gid擷取組名?

組資訊存放在/etc/group檔案中

使用mmap将檔案映射到虛拟位址空間進行操作

将長整型的時間轉換為字元串格式的時間

使用mmap将檔案映射到虛拟位址空間進行操作