Системное программирование в UNIX средствами Free Pascal

       

Получение параметров локальной системы


В книге были рассмотрены некоторые процедуры, сообщающие системные ограничения (например, pathconf). Есть также и другие процедуры, служащие для той же цели:



sysconf

Обеспечивает доступ к конфигурационным параметрам, находящимся в файлах <limits.h> и <unistd.h>

SysInfo

Возвращает информацию о системе

GetHostName

Возвращает имя локального компьютера

uname

Возвращает указатель на структуру utsname, содержащую название операционной системы, имя узла, которое может использоваться системой в сети для установления связи, а также номер версии системы

UNIX

getpwent

Это семейство процедур обеспечивает доступ к данным из файла паролей /etc/passwd. Все следующие вызовы возвращают указатель на структуру passwd, определенную в файле <pwd.h>:

getpwnam(const char *username);

getpwuid(uid_t uid);

getpwent(void);

getgrent

Это семейство процедур связано с доступом к файлу описания групп /etc/group

getrlimit

Обеспечивает доступ к предельным значениям системных ресурсов, таких как память или доступное дисковое пространство

getlogin

cuserid

Получает имя пользователя для текущего процесса

Пример использования SysInfo:

Uses Linux;

Function Mb(L : Longint) : longint;

begin

  Mb:=L div (1024*1024);

end;

  

Var Info : TSysInfo;

    D,M,Secs,H : longint;

begin

  If Not SysInfo(Info) then

    Halt(1);

  With Info do

    begin

    D:=Uptime div (3600*24);

    UpTime:=UpTime mod (3600*24);

    h:=uptime div 3600;

    uptime:=uptime mod 3600;

    m:=uptime div 60;

    secs:=uptime mod 60;

    Writeln('Uptime : ',d,'days, ',h,' hours, ',m,' min, ',secs,' s.');

    Writeln('Loads  : ',Loads[1],'/',Loads[2],'/',Loads[3]);

    Writeln('Total Ram  : ',Mb(totalram),'Mb.');

    Writeln('Free Ram   : ',Mb(freeram),'Mb.');

    Writeln('Shared Ram : ',Mb(sharedram),'Mb.');

    Writeln('Buffer Ram : ',Mb(bufferram),'Mb.');

    Writeln('Total Swap : ',Mb(totalswap),'Mb.');

    Writeln('Free Swap  : ',Mb(freeswap),'Mb.');

    end;

end.

Пример использования uname:

Uses linux;

Var UN : utsname;

begin

  if Uname (UN) then

    With UN do

      begin

      Writeln ('Name       : ',pchar(@sysname[0]));

      Writeln ('Nodename   : ',pchar(@Nodename[0]));

      Writeln ('release    : ',pchar(@Release[0]));

      Writeln ('Version    : ',pchar(@Version[0]));

      Writeln ('Machine    : ',pchar(@Machine[0]));

      Writeln ('Domainname : ',pchar(@domainname[0]));

      end;

end.



Содержание раздела