2011-11-12 10 views
7

Soy nuevo en Lazarus/FreePascal y no tengo experiencia previa en Delphi. Quiero poder obtener información de la versión del SO y tipo de cuenta de usuario en WIndows y Linux. Vi que hay una API del sistema de Windows, pero no pude encontrar nada similar para Linux.Obtenga información del sistema Linux con Lazarus y FreePascal

¿Existe una API del sistema Linux para Lazarus/FreePascal y, de ser así, cómo puedo usarla?

+0

En Linux deberá llamar a 'libc'. No tengo idea de si las bibliotecas de FPC lo envuelven o no. Espero y espero que lo hagan. –

+0

Sin embargo, no desea utilizar la unidad "libc" en freepascal, ya que eso se depreció. – Noah

Respuesta

4

No existe tal punto unificado en Linux, para lo cual podría escribir un encabezado y luego seguir usándolo. Además, dado que muchas partes de Linux tienen versiones independientes, no existe una sola versión.

Dicho esto, la versión del núcleo se puede obtener a través de baseunix.fpuname(). La versión de distribución es difícil, ya que cada distribución almacena su información de versión de una manera diferente.

El primer paso sería identificar la información que necesita y una idea aproximada de dónde obtenerla (por ejemplo, bibliotecas de sistemas como libc, información adicional como sysctl y/proc, y sistemas de nivel superior en sistemas de escritorio que permiten consultar información, por ejemplo, a través de DBUS). Esas referencias no estarán siempre en Pascal. Luego haga preguntas específicas aquí, o en los foros/maillistas de Lazarus.

Pero no hay una funcionalidad similar a WMI que siempre funciona y es bastante invariante. Linux es y sigue siendo un sistema operativo de hackers y tweakers fragmentado en distribuciones separadas con pocos valores duros. DBUS y HAL iban en esa dirección, pero versionitis y la transición a una nueva biblioteca hacían que esta ruta fuera menos universal.

+0

Hay LSB, sin embargo, existen herramientas como "lsb_release" en al menos algunas distribuciones. –

+0

Sin duda hay formas, pero son todo un trabajo duro. El punto del mensaje es que va a ser más difícil que Windows y no será un esfuerzo aislado. Para cada atributo adicional puede haber trabajo involucrado. Primero piense detenidamente sobre sus requisitos. –

+0

Gracias por la información. – Shade

1
  1. Hay una unidad "Unix", puede verificar si lo que quiere está ahí.

Quiero ser capaz de obtener información de la versión del sistema operativo

¿Qué significa esto exactamente? Puede usar el resultado de "uname -a" (Llamado de TProcess), según sus necesidades. También hay archivos como/etc/redhat-release, etc., pero pueden variar según la distribución.

y tipo de cuenta de usuario en Windows y Linux.

Probablemente lo que quiere en Unix es ver en qué grupos está el usuario. (Hay varias formas de hacerlo).

Vi que hay una API del sistema de Windows, pero no pude encontrar nada similar para Linux.

Linux tiende a seguir el enfoque "Todo es un archivo", por lo que en algún lugar suele haber un archivo (o pseudo-archivo) que puede leer con la información que desee. En general, Unix es más flexible que Windows. Por ejemplo, en Windows probablemente haya una llamada API para obtener la cantidad de procesadores o la velocidad en Mhz. En Linux, puede buscar en/dev/cpuinfo y analizar esa información como un archivo de texto.

Hay varios sabores de Unix, e incluso dentro de Linux, varias distribuciones. Por supuesto, puede limitar el alcance de lo que desea hacer respaldando solo ciertas distribuciones por el momento.

Cuestiones relacionadas