Получить информацию о системе Linux с Lazarus и FreePascal

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

есть ли API системы Linux для Lazarus / FreePascal, и если да, то как я могу его использовать?

2 ответов


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

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

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

но нет WMI как функциональность, которая всегда работает и довольно инвариант. Linux является и остается хакером и tweaker OS, фрагментированной на отдельные дистрибутивы с несколькими жесткими ценные бумаги. DBUS и HAL шли в этом направлении, но versionitis и переход на новую библиотеку сделали этот маршрут менее универсальным.


  1. есть блок "Unix", вы можете проверить, есть ли там то, что вы хотите.

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

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

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

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

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

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

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