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



         

Описание - часть 2


    write (' - установлен флаг append');

  writeln;

  filestatus := 0;

end;

Следует обратить внимание на проверку установки определенного бита во флаги статуса файла в переменной arg1 при помощи побитового оператора И, обозначаемого AND. Поле интересующих нас битов вырезается с помощью специальной маски Open_ACCMODE, определенной в модуле linux. Дальнейшие действия осуществляются с учетом того, что в данном поле не может быть выставлено более одного бита, поскольку эти три режима доступа к файлу не совместимы.

Значение F_SETFL используется для переустановки связанных с файлом флагов статуса. Новые флаги задаются в третьем аргументе вызова fcntl. При этом могут быть установлены только некоторые флаги, например, нельзя вдруг превратить файл, открытый только для чтения, в файл, открытый для чтения и записи. Тем не менее с помощью F_SETFL можно задать режим, при котором все следующие операции записи будут только дописывать информацию в конец файла:

if (fcntl(filedes, F_SETFL, Open_APPEND) = -1) then

  writeln('Ошибка вызова fcntl');




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