2010-02-17 16 views
21

Esiste un modo standard di leggere un tipo di configurazione come i file INI per Linux che utilizza C?Utilizzare un file INI in C su Linux

Sto lavorando su un codice tenuto in mano e la scrittura basato su Linux in C.

In caso contrario, mi piacerà sapere su eventuali alternative.

aggiornamento finale:

ho esplorato e anche utilizzato LibConfig. Ma l'impronta è alta e il mio utilizzo è troppo semplice. Quindi, per ridurre l'impronta, ho implementato la mia implementazione. L'implementazione non è troppo generica, anzi abbastanza abbinata fin d'ora. Il file di configurazione viene analizzato una volta al momento dell'avvio dell'applicazione e impostato su alcune variabili globali.

+0

Sicuramente +1 per chiedere la strada da seguire invece di eseguire roll-your-own # 74632! – DevSolar

+0

@DevSolar, aw cmon, qualsiasi possibilità di eseguire il parser proprio anziché fare cose più produttive è buona! (lingua sulla guancia) –

+1

Se si desidera un elenco di opzioni, è necessario modificare la domanda per dirlo. In questo momento, la risposta corretta è "no, non esiste un modo standard" :) – gnud

risposta

13

Prova libconfig:

una semplice libreria per i file di configurazione di elaborazione strutturata, come questo: test.cfg. Questo formato di file è più compatto e più leggibile di XML. E a differenza di XML, è sensibile al tipo, quindi non è necessario eseguire il parsing delle stringhe nel codice dell'applicazione.

Libconfig è molto compatto, una frazione delle dimensioni della libreria di parser XML expat. Questo lo rende adatto per i sistemi con limitazioni di memoria come i dispositivi portatili.

La libreria include binding per entrambi i linguaggi C e C++. Funziona su POSIX-compliant UNIX e sistemi UNIX-like (GNU/Linux, Mac OS X, Solaris, FreeBSD), Android e Windows (2000, XP e successivi) ...

+1

Sembra che libconfig sia la cosa giusta che guarda alla sua semplicità e alle sue ridotte dimensioni. Molte grazie. – Kangkan

10

No, non esiste un modo standard. Mi dispiace, ma questa è probabilmente la risposta più precisa :)

Si può guardare a questo list of Linux configuration file libraries, però. Potrebbe essere utile.

+2

Ma il meno utile ... – amarillion

+3

divertente come l'OP richiede un metodo * standard *, riceve 7 * diversi * suggerimenti (tutti modificati) e una risposta che dice che * lo standard * non viene modificato. –

+0

Questa è tecnicamente la risposta corretta. –

9

Qui ci sono quattro opzioni:

  1. Iniparser
  2. libini
  3. sdl-cfg
  4. RWini
+0

Non preoccuparti di # 1 (Iniparser). Questa deve essere la peggiore implementazione che abbia mai visto. – Andy

7

Se è possibile utilizzare la (eccellente, in qualsiasi applicazione C-based) glib , ha un key-value file parser quello è adatto per i file in stile .ini. Naturalmente, avresti anche accesso alle varie (molto belle) strutture dati in glib, "gratis".

4

C'è un aggiornamento fork of iniparser a ccan, l'autore originale non è stato in grado di dargli molta attenzione nel corso degli anni. Disclaimer - Lo mantengo.

Inoltre, iniparser contiene un dizionario che è molto utile da solo.

2

Odio suggerire qualcosa di completamente diverso nel suggerire XML, ma libexpat è piuttosto minimale, ma XML.

Sono giunto a questa conclusione perché avevo la stessa domanda che avevi, ma poi mi sono reso conto che il progetto aveva già linkato a libexpat - e probabilmente dovrei usarlo.

3

Se avete bisogno di un codice veloce e piccolo solo per la lettura dei file di configurazione suggerisco il inih

Si carica il contenuto del file di configurazione solo una volta, analizza il contenuto e chiama una funzione di callback per ogni coppia chiave/valore.

Davvero piccolo. Può essere utilizzato anche su sistemi embedded.