Системное программирование в 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.

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