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



Описание


uses stdio;

function pathconf(pathname:pchar;name:longint):integer;

function fpathconf(filedes, name:longint):integer;

Обе эти процедуры работают одинаково и возвращают значение для запрошенного ограничения или переменной. Различие между ними заключается в первом параметре: для процедуры pathconf это имя файла или каталога, а для процедуры fpathconf – дескриптор открытого файла. Второй параметр является значением одной из констант, определенных в файле stdio и обозначающих запрашиваемое ограничение.

Следующая программа lookup может использоваться для вывода системных ограничений для заданного файла/каталога. В этом примере программа lookup выводит наиболее интересные из этих значений для стандартного каталога /tmp:

(* Программа lookup - выводит установки ограничений файлов *)

uses stdio;

type table=record

  val:integer;

  name:pchar;

end;

var

  tb:^table;

const options:array [0..3] of table=(

    (val:_PC_LINK_MAX; name:'Максимальное число ссылок'),

    (val:_PC_NAME_MAX; name:'Максимальная длина имени файла'),

    (val:_PC_PATH_MAX; name:'Максимальная длина пути'),

    (val:-1; name:nil)

  );

begin

  tb:=options;

  while tb^.name<>nil do

  begin

    printf('%-32.31s%ld'#$a, [tb^.name, pathconf ('/tmp', tb^.val)]);

    inc(tb);

  end;

end.

На одной из систем эта программа вывела следующий результат:

Максимальное число ссылок        32767

Максимальная длина имени файла   256

Максимальная длина пути          1024

Эти значения относятся к каталогу /tmp. Максимально возможное число ссылок является характеристикой самого каталога, а максимальная длина имени файла относится к файлам в каталоге. Существуют также общесистемные ограничения (system-wide limits), они декларируются в файле <limits.h> и их значения могут быть определены при помощи похожей процедуры sysconf.




Содержание  Назад  Вперед