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


         

в конце аргумента, передаваемого процедуре


в конце аргумента, передаваемого процедуре fopen. Вышеприведенные режимы можно дополнить следующим образом:














r+

Открыть файл filename для чтения и записи. Если файл не существует, то вызов снова завершится неудачей

w+

Создать файл filename и открыть его для чтения и записи. (Если файл уже существует, то он будет усечен до нулевой длины)

а+

Открыть файл filename для чтения и записи. При записи данные будут добавляться в конец файла. Если файл не существует, то он создается

В некоторых системах для доступа к двоичным, а не текстовым файлам, к строке также нужно добавлять символ b, например, rb.
Если файл создается при помощи процедуры fopen, для него обычно устанавливается код доступа octal(0666). Это позволяет всем пользователям выполнять чтение из файла и запись в него. Эти права доступа по умолчанию могут быть изменены установкой ненулевого значения атрибута процесса umask. (Системный вызов umask был изучен в главе 3.)
Следующий пример программы показывает использование процедуры fopen и ее связь с процедурой fclose. При этом, если файл indata существует, то он открывается для чтения, а файл outdata создается (или усекается до нулевой длины, если он существует). Процедура fatal предназначена для вывода сообщения об ошибке, ее описание было представлено в предыдущих главах. Она просто передает свой аргумент процедуре perror, а затем вызывает halt для завершения работы программы.
uses stdio;
const
  inname:pchar = 'indata';
  outname:pchar = 'outdata';
function fatal(s:pchar):integer;
begin
  perror (s);
  halt (1);
end;
var
  inf,outf:pfile;
begin
  inf := fopen (inname, 'r');
  if inf = nil then
    fatal ('Невозможно открыть входной файл');
  outf := fopen (outname, 'w');
  if outf = nil then
    fatal ('Невозможно открыть выходной файл');
  (* Выполняются какие-либо действия ... *)
  fclose (inf);
  fclose (outf);
  halt (0);
end.
На самом деле, в данном случае оба вызова fсlose не нужны. Дескрипторы, связанные с файлами inf и outf, будут автоматически закрыты при завершении работы процесса, и вызов halt автоматически сбросит данные из буфера указателя outf на диск, записав их в файл outdata.
С процедурой fclose тесно связана процедура fflush:

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





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