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


         

Управление файлами


Упражнение 13.41. Составьте аналог команды rm.

uses linux,sysutils;

var

  f:text;

  d:boolean;

  k:char;

  s:string;

begin

  writeln('введите имя файла, который нужно удалить');

  readln(s);

  assign(f,s);

 

  if s='' then

  begin

    writeln('повторите попытку');

    exit;

  end;

  writeln('подтвердите удаление файла Y/N');

  readln(k);

  if (k='Y') or (k='y') then

  begin

    d:=deletefile(s);

    if d then

      writeln('файл удален')

    else

      writeln('файл не удален');

  end

  else

    writeln('файл не удален');

end.

 

Упражнение 13.42. Используя системный вызов fstat, напишите программу, определяющую тип файла: обычный файл, каталог, устройство, FIFO-файл.

uses linux,strings,sysutils;

function gettype(mode:integer):string;

begin

  if S_ISREG(mode) then

    gettype:='файл'

  else

    if S_ISDIR(mode) then

      gettype:='каталог'

    else

      if S_ISCHR(mode) then

        gettype:='байтоориентированное устройство'

      else

        if S_ISBLK(mode) then

          gettype:='блочноориентированное устройство'

        else

          if S_ISFIFO(mode) then

            gettype:='FIFO-файл'

          else

            gettype:='другое';

end;

var

  st:stat;

  name:array[0..255] of char;

begin

  if paramcount = 0 then

    name:='.'

  else

    name:=fexpand(paramstr(1));

    if not fstat(pchar(name),st) then

      writeln('Ошибка вызова stat для ',name)

    else

      write(gettype(st.mode));

end.

 

Упражнение 13.43. Составьте аналог команды chgrp.

Uses linux;

Var

  UID,GID:Longint;

  F:Text;

  Code:Integer;

begin

  Writeln('This will only work if you are root.');

  if ParamCount<3 then

    begin

      Writeln('Error!!!');

      Writeln('Format: ./task <Filename> <UID> <GID>');

      Halt(1);

    end;

  val(Paramstr(2),UID,Code);

  if Code<>0 then

    begin

      Writeln('Error!!!');

      Writeln('Format: ./task <Filename> <UID> <GID>');



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





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий