c程式使用uci配置檔案

2021-07-12 05:51:18 字數 2375 閱讀 4081

uci 是openwrt為實現配置集中化而引入的乙個軟體包, 通過修改uci,可以實現對openwrt的絕對部分配置的修改.luci(openwrt 的web配置介面)也是通過讀uci配置檔案的操作來實現使用者對路由的配置的。通過掌握uci的api的使用,可以方便地將您的軟體的配置介面整合到luci中.

luci的配置檔案一般儲存在 /etc/config目錄下。比如網路配置檔案則是 /etc/config/network 無線的配置檔案是 /etc/config/wireless. 跟多配置檔案的含義參考官方 wiki

uci上下文: struct uci_context *

包(package): 乙個包對應乙個uci格式的檔案.型別是 struct uci_package *

節(section): 乙個配置檔案的節點. 型別是 struct uci_list *

值(value):乙個節下面可能包含多個值 乙個值具有乙個名字.

uci配置檔案的基本操作.

[cpp]view plain

copy

#include 

#include 

#include 

#include 

static

struct

uci_context * ctx = null; 

//定義乙個uci上下文的靜態變數.

/*********************************************

*   載入配置檔案,並遍歷section.

*/bool

load_config()  

// 如果您不確定是 string型別 可以先使用 uci_lookup_option() 函式得到option 然後再判斷.

// option 的型別有 uci_type_string 和 uci_type_list 兩種.

}  uci_unload(ctx, pkg); // 釋放 pkg 

cleanup:  

uci_free_context(ctx);  

ctx = null;  

}  

加入現在有乙個如下的配置檔案:

[plain]view plain

copy

config  "server" "webserver"  

list    "index" "index.html"  

list    "index" "index.php"  

list    "index" "default.html"  

**片:

[cpp]view plain

copy

// s 為 section.

struct

uci_option * o = uci_lookup_option(ctx, s, 

"index"

);  

if((null != o) && (uci_type_list == o->type)) 

//o存在 且 型別是 uci_type_list則可以繼續.

}  uci提供了乙個簡潔的辦法來操作配置資訊,例如有乙個配置檔案

[plain]view plain

copy

#檔名: testconfig  

config  'servver'  

option  'value' '123' # 我們想修改 'value' 的值為 '456'  

**如下:

[cpp]view plain

copy

struct

uci_context * ctx = uci_alloc_context(); 

//申請上下文

struct

uci_ptr ptr =;  

uci_set(_ctx,&ptr); //寫入配置

uci_commit(_ctx, &ptr.p, false

); //提交儲存更改

uci_unload(_ctx,ptr.p); //解除安裝包

uci_free_context(ctx); //釋放上下文

依照上面的例子,我們可以舉一反三, uci_ptr 用來指定資訊.而是用uci_set則是寫入資訊.同類的函式有如下幾個: 針對list的操作:

[cpp]view plain

copy

uci_add_list()  

// 新增乙個list 值

uci_del_list()  // 刪除乙個list 值

uci_delete()    // 刪除乙個option值

tp Yaconf 配置檔案使用

yaconf是乙個高效能的php配置容器,它在php啟動的時候把格式為ini的配置檔案parse後儲存在php的常駐記憶體中 configure with php config usr bin php config make j make install 查詢php.ini檔案php i grep ...

配置檔案Profile使用

spring.profiles.active dev 在yaml檔案中支援使用多文件塊方式,不同的環境可以通過 進行分隔,如果有編寫的pplication properties yml檔案,則檔案優先。spring profiles active prod 指定需要切換的環境,檔案優先 spring...

應用程式配置檔案

這裡主要記錄一下在學習過程中配置檔案的使用,因為是從機房重構接觸到的,就以機房裡的窗體為例子。應用程式配置檔案包含應用程式特定的設定。該檔案包含公共語言執行庫讀取的配置設定 如程式集繫結策略 遠端處理物件等等 以及應用程式可以讀取的設定。應用程式配置檔案的名稱和位置取決於應用程式的宿主,在vs中,配...