2010-02-17 3 views
21

Czy istnieje standardowy sposób odczytywania konfiguracji typu plików INI dla systemu Linux przy użyciu C?Użyj pliku INI w języku C na komputerze pod Linuksem

pracuję nad Linux opartego na kodzie przenośnym i pisania w C

przeciwnym razie będę chciał wiedzieć o jakichkolwiek alternatyw.

Ostateczna zmiana:

mam zbadane i używane nawet LibConfig. Ale ślad jest wysoki i moje użycie jest zbyt proste. Aby zmniejszyć ślad, wprowadziłem własną implementację. Implementacja nie jest zbyt ogólna, w rzeczywistości od teraz dość sprzężona. Plik konfiguracyjny jest analizowany jednorazowo w momencie uruchamiania aplikacji i ustawiony na niektóre zmienne globalne.

+0

Zdecydowanie +1 za proszenie o drogę, zamiast robić roll-your-own # 74632! – DevSolar

+0

@DevSolar, w cmon, każda szansa na przetasowanie własnego parsera, zamiast robić bardziej produktywne rzeczy, jest dobra! (język w policzek) –

+1

Jeśli chcesz listę opcji, powinieneś edytować swoje pytanie, aby tak powiedzieć. W tej chwili prawidłową odpowiedzią jest "nie, nie ma standardowego sposobu" :) – gnud

Odpowiedz

13

Spróbuj libconfig:

prosta biblioteka dla przetwórstwa strukturę plików konfiguracyjnych, takich jak ten: test.cfg. Ten format pliku jest bardziej kompaktowy i bardziej czytelny niż format XML. I w przeciwieństwie do XML, jest on świadomy typu, więc nie trzeba wykonywać parsowania ciągów w kodzie aplikacji.

Libconfig jest bardzo kompaktowy - ułamek wielkości biblioteki analizatora składni XML programu Expat. Dzięki temu doskonale nadaje się do systemów z ograniczoną pamięcią, takich jak urządzenia przenośne.

Biblioteka zawiera wiązania dla języków C i C++. Działa na zgodnych z POSIX systemach UNIX i UNIX (GNU/Linux, Mac OS X, Solaris, FreeBSD), Android i Windows (2000, XP i nowszych) ...

+1

Wygląda na to, że libconfig to właściwa kasa, patrząc na jej prostotę i niewielkie rozmiary. Wielkie dzięki. – Kangkan

10

Nie, nie ma jednej standardowej metody. Przykro mi, ale to chyba najbardziej precyzyjna odpowiedź :)

Można jednak spojrzeć na to list of Linux configuration file libraries. To może być pomocne.

+2

Ale najmniej pomocny ... – amarillion

+3

zabawne, jak OP prosi o * standardową * metodę, dostaje 7 * różnych * sugestii (wszystkie zmaksymalizowane) i jedną odpowiedź, która mówi, że * nie ma standardowego * zostaje sprowadzony w dół. –

+0

To jest technicznie poprawna odpowiedź. –

7

Jeśli można użyć (doskonała, w dowolnej aplikacji C-based) glib , ma to key-value file parser, że jest odpowiedni dla plików w formacie .ini. Oczywiście dostaniesz także dostęp do różnych (bardzo ładnych) struktur danych w glib, "za darmo".

4

Istnieje aktualizacja widelec iniparser na ccan, oryginalny autor nie był w stanie poświęcić mu wiele uwagi na przestrzeni lat. Zastrzeżenie - utrzymuję to.

Dodatkowo, iniparser zawiera słownik, który jest bardzo przydatny sam.

2

Nienawidzę sugerować czegoś zupełnie innego w sugerowaniu XML, ale libexpat jest dość minimalny, ale robi XML.

Doszedłem do tego wniosku, ponieważ miałem to samo pytanie, co ty, ale potem zdałem sobie sprawę, że projekt już był powiązany z libexpat - i prawdopodobnie powinienem po prostu użyć tego.

3

Jeśli potrzebujesz szybki i mały kod tylko do odczytu plików konfiguracyjnych Proponuję inih

ładuje zawartość pliku konfiguracyjnego tylko raz, analizować zawartość i wywołuje funkcję zwrotną dla każdej pary klucz/wartość.

Naprawdę mały. Może być również stosowany w systemach wbudowanych.