2010-02-17 12 views
21

¿Hay una forma estándar de leer un tipo de configuración como INI archivos para Linux usando C?Use un archivo INI en C en Linux

estoy trabajando en un código de mano y la escritura basada en Linux en C.

De lo contrario, se desea saber acerca de las alternativas.

actualización final:

he explorado y utilizado incluso LibConfig. Pero la huella es alta y mi uso es demasiado simple. Entonces, para reducir la huella, implementé mi propia implementación. La implementación no es demasiado genérica, de hecho bastante acoplada a partir de ahora. El archivo de configuración se analiza una vez en el momento de iniciar la aplicación y se establece en algunas variables globales.

+0

Definitivamente +1 para preguntar por el camino a seguir en lugar de hacer roll-your-own # 74632! – DevSolar

+0

@DevSolar, aw cmon, ¡cualquier posibilidad de rodar su propio analizador en lugar de hacer cosas más productivas es una buena idea! (lengua en la mejilla) –

+1

Si desea una lista de opciones, debe editar su pregunta para decirlo. En este momento, la respuesta correcta es 'no, no hay una forma estándar' :) – gnud

Respuesta

13

Trate libconfig:

una biblioteca simple para procesamiento estructurado archivos de configuración, como éste: test.cfg. Este formato de archivo es más compacto y más legible que XML. Y a diferencia de XML, es sensible al tipo, por lo que no es necesario realizar un análisis de cadenas en el código de la aplicación.

Libconfig es muy compacto: una fracción del tamaño de la biblioteca del analizador XML expat. Esto lo hace adecuado para sistemas con memoria limitada como dispositivos de mano.

La biblioteca incluye enlaces para los lenguajes C y C++. Funciona en POSIX UNIX y sistemas similares a Unix (GNU/Linux, Mac OS X, Solaris, FreeBSD), Android y Windows (2000, XP y versiones posteriores) ...

+1

Parece que libconfig es el chice adecuado al mirar su simplicidad y su pequeño tamaño. Muchas gracias. – Kangkan

10

No, no hay una forma estándar. Lo siento, pero esa es probablemente la respuesta más precisa :)

Sin embargo, puedes mirar este list of Linux configuration file libraries. Eso podría ser útil.

+2

Pero el menos útil ... – amarillion

+3

Es curioso cómo OP pide un método * estándar *, obtiene 7 * diferentes * sugerencias (todas modificadas) y una respuesta que dice que no hay * ningún estándar * que se modifique. –

+0

Esta es técnicamente la respuesta correcta. –

9

Aquí hay cuatro opciones:

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

No te molestes con el n. ° 1 (Iniparser). Esa tiene que ser la peor implementación que he visto hasta ahora. – Andy

7

Si puede utilizar el (excelente, en cualquier aplicación basada en C) glib , tiene un key-value file parser que es adecuado para archivos estilo .ini. Por supuesto, también tendrías acceso a varias (muy buenas) estructuras de datos en glib, "gratis".

4

Hay un actualizan tenedor de iniparser en ccan, el autor original no ha podido darle mucha atención en los últimos años. Descargo de responsabilidad - Lo mantengo.

Además, iniparser contiene un diccionario que es muy útil por sí mismo.

2

Odio sugerir algo completamente diferente al sugerir XML, pero libexpat es bastante minimalista, pero tiene XML.

Llegué a esta conclusión ya que tenía la misma pregunta que usted, pero luego me di cuenta de que el proyecto ya tenía libexpat vinculado, y probablemente debería usarlo.

3

Si necesita un código rápido y pequeño sólo para la lectura de archivos de configuración que sugieren la inih

Se carga el contenido del archivo de configuración de una sola vez, analizar el contenido y llama a una función de devolución de llamada para cada par clave/valor.

Realmente pequeño. También se puede usar en sistemas integrados.