LINUX下解析配置檔案 配合上篇使用)

2021-06-09 19:32:23 字數 2081 閱讀 5418

linux下解析配置檔案

配置檔案在linux下使用得非常普遍。形如下面的這個檔案就是乙個典型的配置檔案:

# this is just an example

# there can be comments before the first group

[first group]

name=key file exampletthis value showsnescaping

# localized strings are stored in multiple key-value pairs

welcome=hello

welcome[de]=hallo

welcome[fr_fr]=bonjour

welcome[it]=ciao

welcome[be@latin]=hello

[another group]

numbers=2;20;-200;0

booleans=true;false;true;true

在windows系統中,也存在這類檔案,通常字尾名是ini。在gtk的世界中,稱這類檔案為key file(因為這個檔案包含很多的字段(key)?)。這兩類檔案看上去差不多,但是還是有一些區別的:

首先就是注釋,init檔案把「;」視作注釋開始,而key file,顯然是用「#」

key file所有的配置項都在配置段中,即任何配置項之前肯定有類似」[配置段]「的東西。

還有就是眾所周知的,windows下的ini檔案通常不是utf8編碼,而linux下,顯然推薦這麼幹

另外就是配置項和配置段大小寫,linux下的key file是區分的

在keyfile中允許資料型別為邏輯型的配置項,取值為true或者false。而ini檔案裡大概只有用整形的配置專案與之對應了

簡單介紹完了,我們在用乙個簡單的例子:

#include 

#include

int main(int argc, char **argv)

使用下面的命令編譯:

gcc `pkg-config --cflags --libs glib-2.0` dummy.c
這裡的`pkg-config –cflags –libs glib-2.0`用於自動查詢呼叫glib所需的標頭檔案和庫檔案路徑,並且按照cflags所需的格式輸出。

我們用的範例配置檔案(援引自pacman的配置檔案)如下:

[options]

holdpkg = pacman glibc

執行效果怎麼樣呢?

[[email protected] tmp]$./a.out /etc/pacman.conf

holdpkg of options section is "pacman glibc"

範例程式很簡單,但是五臟俱全,要使用glib來解析配置檔案,大概有下面的幾個流程:

首先用g_key_file_new()建立乙個gkeyfile緩衝區

然後用g_key_file_load_from_file()來初始化填充這個緩衝區

接著,你就可以用g_key_file_get_資料型別()來獲取資料了

或者,使用g_key_file_set_資料型別()來更新設定資料

而且,使用g_key_file_remove_key()來刪除設定項

那麼增加設定項呢?當設定資料時,如果沒有該資料項,預設就會增加

當然,在此之前,如果不放心的話,還可以通過g_key_file_has_group()、g_key_file_has_key()來判斷資料段、資料項是否存在

末了,你可能想把更新後的配置寫回去,這個有點怪,需要用g_key_file_to_data()將緩衝區裡的配置資料轉成字串,然後將這個字串寫入到配置檔案即可。這個函式同時也會返回字串的長度,供寫入時使用

最後,乙個良好的習慣——呼叫g_key_file_free()來釋放緩衝區

資料型別包括字串、整形、長整型、浮點……,以及這類資料組成的陣列。

另外glib甚至還可以讀寫各個配置項上的注釋,神奇吧?

更多的神奇,還是參考glib的官方文件去吧

**:

Linux下解析配置檔案

配置檔案在linux下使用得非常普遍。形如下面的這個檔案就是乙個典型的配置檔案 this is just an example there can be comments before the first group first group name key file exampletthis va...

Linux下解析配置檔案

配置檔案在linux下使用得非常普遍。形如下面的這個檔案就是乙個典型的配置檔案 this is just an example there can be comments before the first group first group name key file exampletthis va...

linux 配置檔案讀寫解析

有時我們自己寫linux下配置檔案,需要手動解析,然後使得程式可以配置的 類似於以下格式 conf sample configuration fileip 192.16.31.2 position centered直接上 解析 標頭檔案ccl.h ifndef cll kvconf h define...