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


         

Описание


uses linux;

Function FStat(Path:Pathstr;Var Info:tstat):Boolean;

Function FStat(Fd:longint;Var Info:tstat):Boolean;

Function FStat(var F:Text;Var Info:tstat):Boolean;

Function FStat(var F:File;Var Info:tstat):Boolean;

Function LStat(Path:Pathstr; Var Info:tstat):Boolean;

Системный вызов fstat имеет два аргумента: первый из них – path, как обычно, указывает на полное имя файла. Второй аргумент info является ссылкой на структуру tstat (stat). Эта структура после успешного вызова будет содержать связанную с файлом информацию. Вместо имени файла может также использоваться его дескриптор или файловая переменная.

.

.

.

var

  s:tstat;

  filedes:integer;

  retval:boolean;

filedes := fdopen('/tmp/dina', Open_RDWR);

(* Структура s может быть заполнена при помощи вызова ... *)

retval := fstat('/tmp/dina', s);

/* ... или */

retval := fstat(filedes, @s);

Определение структуры tstat находится в модуле linux и включает следующие элементы:

stat=record

  dev      :  word;

  pad1     :  word;

  ino      :  longint;

  mode     :  word;

  nlink    :  word;

  uid      :  word;

  gid      :  word;

  rdev     :  word;

  pad2     :  word;

  size     :  longint;

  blksze   :  Longint;

  blocks   :  Longint;

  atime    :  Longint;

  unused1  :  longint;

  mtime    :  Longint;

  unused2  :  longint;

  ctime    :  Longint;

  unused3  :  longint;

  unused4  :  longint;

  unused5  :  longint;

end;

Системный вызов lstat получает информацию о символьной ссылке. Например:

uses linux;

   

var f : text;   

    i : byte;

    info : stat;

   

begin

  { Make a file }

  assign (f,'test.fil');

  rewrite (f);

  for i:=1 to 10 do writeln (f,'Testline # ',i);

  close (f);

  { Do the call on made file. }

  if not fstat ('test.fil',info) then

     begin

     writeln('Fstat failed. Errno : ',linuxerror);

     halt (1);

     end;

  writeln;

  writeln ('Result of fstat on file ''test.fil''.');

  writeln ('Inode   : ',info.ino);




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