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


         

Напишите программу, совмещающая команды mv


    exit;

  end;

  name:=paramstr(2);

  ch:=paramstr(1);

  prava:=0;

  for i:=1 to length(ch) do

    if not (ch[i] in ['0'..'7']) then

    begin

      writeln('Права доступа должны быть в восьмеричном формате');

      exit;

    end

    else

      prava:=prava*8+byte(ch[i])-byte('0');

 

  obhod(prava,name);

end.

Упражнение 13.48. Напишите программу, совмещающая команды mv и cp (в зависимости от своего названия).

uses linux,sysutils;

var

  b:byte;

  s:string;

  f1,f2:file of byte;

begin

  s:=paramstr(0);

  delete(s,1,length(s)-2);

  if s='mv' then

  begin

    if paramcount<2 then

    begin

      writeln('Error: wrong arguments');

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

      halt(1);

    end;

    Assign(F1,paramstr(1));

    Assign(F2,paramstr(2));

    if not frename(paramstr(1),paramstr(2)) then

    begin

      writeln('невозможно переименовать ');

      halt(1);

    end;

  end

  else

    if s='cp' then

    begin

      if paramcount<2 then

      begin

        writeln('Error: wrong arguments');

        writeln('format: cp <fileinp> <fileout>');

        Halt(1);

      end;

      Assign(f1,paramstr(1));

      Reset(f1);

      Assign(f2,paramstr(2));

      Rewrite(f2);

      while not eof(f1)do

      begin

        read(f1,b);

        write(f2,b);

      end;

      close(f1);

      close(f2);

    end

    else

      writeln('Переименуйте программу в mv / cp');

end.

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

procedure sync;cdecl; external 'c';

begin

  sync;

end.

Упражнение 13.50. Создайте программу, выводящую содержимое символической ссылки, а затем – целевого файла, на который она указывает.

uses linux;

var

  name,temp:array [0..1023] of char;

  kol,fd:integer;

begin

  if paramcount<>1 then

  begin

    writeln('Используйте: ',paramstr(0),' имя_ссылки');

    exit;

  end;

  temp:=paramstr(1);

  kol:=readlink(temp,name,1023);

  if kol=-1 then

  begin

    writeln('Ошибка чтения ссылки ',temp);

    exit;

  end;

  name[kol]:=#0;

  writeln('По ссылке ',paramstr(1), ' найден файл ',name);

  fd:=fdopen(name,Open_RDONLY);

  if fd=-1 then

  begin

    writeln('Ошибка открытия ',name);

    exit;

  end;

  kol:=fdread(fd,name,1024);

  while kol>0 do

  begin

    fdwrite(1,name,kol);

    kol:=fdread(fd,name,1024);

  end;

  fdclose(fd);

end.


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





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