Язык С




Открытие, создание, закрытие и расцепление (UNLINK)


Кроме случая, когда по умолчанию определены стандартные файлы ввода, вывода и ошибок, вы должны явно открывать фай- лы, чтобы затем читать из них или писать в них. Для этой це- ли существуют две точки входа: OPEN и CREAT.

Функция OPEN весьма сходна с функцией FOPEN, рассмотрен- ной в главе 7, за исключением того, что вместо возвращения указателя файла она возвращает дескриптор файла, который яв- ляется просто целым типа INT.

INT FD; FD=OPEN(NAME,RWMODE);

Как и в случае FOPEN, аргумент NAME является символьной строкой, соответствующей внешнему имени файла. Однако аргу- мент, определяющий режим доступа, отличен: RWMODE равно: 0 - для чтения, 1 - для записи, 2 - для чтения и записи. Если происходит какая-то ошибка, функция OPEN возвращает "-1"; в противном случае она возвращает действительный дескриптор файла. Попытка открыть файл, который не существует, является ошибкой. Точка входа CREAT предоставляет возможность созда- ния новых файлов или перезаписи старых. В результате обраще- ния

FD=CREAT(NAME,PMODE);

возвращает дескриптор файла, если оказалось возможным соз- дать файл с именем NAME, и "-1" в противном случае. Если файл с таким именем уже существует, CREAT усечет его до ну- левой длины; создание файла, который уже существует, не яв- ляется ошибкой. Если файл является совершенно новым, то CREAT создает его с определенным режимом защиты, специфицируемым аргумен- том PMODE. В системе файлов на UNIX с файлом связываются де- вять битов защиты информации, которые управляют разрешением на чтение, запись и выполнение для владельца файла, для группы владельцев и для всех остальных пользователей. Таким образом, трехзначное восьмеричное число наиболее удобно для спецификации разрешений. Например, число 0755 свидетельству- ет о разрешении на чтение, запись и выполнение для владельца и о разрешении на чтение и выполнение для группы и всех ос- тальных. Для иллюстрации ниже приводится программа копирования одного файла в другой, являющаяся упрощенным вариантом ути- литы CP системы UNIX. (Основное упрощение заключается в том, что наш вариант копирует только один файл и что второй аргу- мент не должен быть справочником).




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