log模組學習

2021-10-09 15:44:06 字數 2284 閱讀 2522

linux下,每個程序都有自己擁有的記憶體區域,程序的記憶體總是私有的。共享記憶體是從系統的空閒記憶體池中分配的,希望訪問它的每個程序連線它。這個連線過程稱為對映。

基本流程:編譯時要加庫檔案-lrt

shm_id=

shm_open

(ar**[1]

,o_rdwr|o_creat,

0644);

/*建立共享記憶體區*/

ftruncate

(shm_id,

100)

;/*修改共享區大小*/

fstat

(shm_id,

&buf)

;ptr=

mmap

(null

,buf.st_size,prot_read|prot_write,map_shared,shm_id,0)

;/*連線共享記憶體區*/

strcpy

(ptr,

"hello linux");

/*寫入共享記憶體區*/

printf

("%s\n"

,ptr)

;/*讀出共享記憶體區*/

shm_unlink

(ar**[1]

);/*刪除共享記憶體區*/

1. shm_open()函式

int shm_open(const char *name, int oflag, mode_t mode);

//建立或開啟乙個共享記憶體,成功返回乙個整數的檔案描述符,錯誤返回-1。

1.name:共享記憶體區的名字;

2.標誌位;open的標誌一樣

3.許可權位

shm_id=shm_open(ar**[1],o_rdwr|o_creat,0644);/*建立共享記憶體區*/

2.ftruncate()函式

功能:    調整檔案或共享記憶體區大小

標頭檔案: #include 函式原形: int ftruncate(int fd,off_t length);

引數:

fd 描述符

length 大小

返回值: 成功返回0,出錯返回-1

3. fstat()

當開啟乙個已存在的共享記憶體區物件時,我們可呼叫fstat來獲取有關該物件的資訊

功能: 獲得檔案或共享記憶體區的資訊

標頭檔案: #include #include #include 函式原形: int stat(const char *file_name,struct stat *buf);

引數:

file_name 檔名

buf stat結構

返回值: 成功返回0,出錯返回-1

對於普通檔案stat結構可以獲得12個以上的成員資訊,然而當fd指代乙個共享記憶體區物件時,只有四個成員含有資訊。

struct stat;

4.mmap

void *mmap(void *addr, size_t length, int prot, int flags,int fd, off_t offset);//位址對映

引數說明:

length: 欲建立對映區的大小

prot: 對映區許可權prot_read、prot_write、prot_read|prot_write

flags: 標誌位引數(常用於設定更新物理區域、設定共享、建立匿名對映區)

map_shared: 會將對映區所做的操作反映到物理裝置(磁碟)上,無血緣關係的程序通訊

map_private: 對映區所做的修改不會反映到物理裝置。

map_anonymous:匿名對映區

fd: 用來建立對映區的檔案描述符

offset: 對映檔案的偏移(4k的整數倍)

5、shm_unlink

shm_unlink(ar**[1]);/*刪除共享記憶體區*/

簡單的log模組

工程中用的是log4cpp這種庫,然後為了多語言 修改日誌免編譯 可xml配置 純cpp庫可用 qt庫可用 配套工程就寫了3個。開發小工具時,往往就乙個小函式。ifndef logger h define logger h include include void writelog const st...

Log日誌學習

log4j2 spring boot使用 一,引入依賴 org.springframework.boot spring boot starter web org.springframework.boot spring boot starter logging org.springframework....

Mybatis模組 Log4j日誌

什麼是log4j 1 log4j是apache的乙個開源專案,通過使用log4j,我們可以控制日誌資訊輸送的目的地是控制台 檔案 gui元件 2 我們也可以控制每一條日誌的輸出格式 3 通過定義每一條日誌資訊的級別,我們能夠更加細緻地控制日誌的生成過程 4 通過乙個配置檔案來靈活地進行配置,而不需要...