Необязательный (optional) третий параметр mode, используемый только вместе с флагом Open_CREAT, также будет обсуждаться в следующем разделе – он связан с правами доступа к файлу. Следует обратить внимание на квадратные скобки в описании, которые обозначают, что параметр mode является необязательным.
Следующий фрагмент программы открывает файл junk для чтения и записи и проверяет, не возникает ли при этом ошибка. Этот последний момент особенно важен: имеет смысл устанавливать проверку ошибок во все программы, которые используют системные вызовы, поскольку каким бы простым не было приложение, иногда может произойти сбой. В этом примере используются библиотечные процедуры writeln для вывода сообщения и halt – для завершения процесса. Обе эти процедуры являются стандартными в любой системе.
uses linux;
const
workfile = 'junk'; (* задать имя рабочего файла *)
var
filedes:integer;
begin
(* Открыть, используя постоянную Open_RDWR из модуля linux *)
(* Файл открывается для чтения/записи *)
filedes := fdopen (workfile, Open_RDWR);
if filedes = -1 then
begin
writeln('Невозможно открыть файл ', workfile);
halt(1); (* выход по ошибке *)
end;
writeln('Файл ', workfile, ' успешно открыт, дескриптор равен ', filedes);
(*
* Остальная программа
*)
halt(0); (* нормальный выход *)
end.
Обратите внимание, что используется halt с параметром 1 в случае ошибки, и 0 – в случае удачного завершения. Это соответствует соглашениям UNIX и является правильной практикой программирования. Как будет показано в следующих главах, после завершения программы можно получить передаваемый вызову halt аргумент (program’s exit status
– код завершения программы).