Получите информацию о системе Linux с Lazarus и FreePascal - PullRequest
7 голосов
/ 12 ноября 2011

Я действительно новичок в Lazarus / FreePascal и у меня нет опыта работы с Delphi. Я хочу получить информацию о версии ОС и типе учетной записи пользователя как в Windows, так и в Linux. Я видел, что есть системный API Windows, но не смог найти ничего похожего для Linux.

Существует ли системный API-интерфейс Linux для Lazarus / FreePascal и, если да, как я могу его использовать?

Ответы [ 2 ]

4 голосов
/ 14 ноября 2011

В Linux нет такой единой точки, для которой вы могли бы написать один заголовок и затем продолжать его использовать.Более того, поскольку многие части Linux имеют независимую версию, единой версии не существует.

При этом версию ядра можно получить с помощью baseunix.fpuname ().Версия дистрибутива сложная, поскольку каждый дистрибутив хранит информацию о своей версии по-своему.

Первым шагом будет определение необходимой информации и примерное представление о том, где ее получить (например, системные библиотеки, такие как libc, дополнительнаяинформация, такая как sysctl и / proc, и если системы более высокого уровня в настольных системах позволяют запрашивать такую ​​информацию, например, через DBUS).Эти ссылки не всегда будут на Паскале.Затем задайте конкретные вопросы здесь или на форумах / рассылках Lazarus.

Но не существует WMI-подобной функциональности, которая всегда работает и довольно инвариантна.Linux является и остается хакерской и твикерской ОС, разделенной на отдельные дистрибутивы с небольшим количеством ценных бумаг.DBUS и HAL шли в этом направлении, но версионит и переход на новую библиотеку сделали этот маршрут менее универсальным.

1 голос
/ 03 февраля 2012
  1. Существует модуль "Unix", вы можете проверить, есть ли там то, что вы хотите.

Я хочу получить информацию о версии ОС

Что это значит точно?Вы можете использовать вывод "uname -a" (Вызывается из TProcess), в зависимости от ваших потребностей.Существуют также файлы, такие как / etc / redhat-release и т. Д., Но они могут различаться в зависимости от дистрибутива.

и типа учетной записи пользователя в Windows и Linux.

Вероятно, вам нужно в Unix посмотреть, в какие группы входит пользователь. (Есть несколько способов сделать это).

Я видел, что есть системный API Windows, но не смог ничего найтианалогично для Linux.

Linux стремится следовать подходу «Все есть файл», поэтому где-то обычно есть файл (или псевдофайл), который вы можете прочитать с нужной вам информацией.В общем, Unix более гибок, чем Windows.Например, в Windows, вероятно, есть вызов API для получения числа процессоров или скорости в МГц.В Linux вы можете посмотреть в / dev / cpuinfo и проанализировать эту информацию как текстовый файл.

Существуют различные разновидности Unix и даже в Linux, различные дистрибутивы.Конечно, вы можете сузить область действия, поддерживая пока только определенные дистрибутивы.

...