[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Открытие файла - Примеры

Приведенные ниже объявления необходимы для перечисленных на этой
странице примеров. Заметьте, включение файла <fcntl.h> необходимо для
использования символьных имен флагов open(2).
#include <fcntl.h>
#define TMPFILE "/tmp/tmpfile"
char account[] = "account";
int logfd, acctfd, fd, fdin, fdout;
char *file;

.    Файл account, находящийся в текущем каталоге, открывается для
чтения.
   acctfd = open(account, O_RDONLY);

.    Файл, на имя которого указывает file, открывается для записи.
Если файл не существует, он создается с маской прав доступа 0600 (не
считая umask-установок). Если файл существует, он будет усечен до
нулевого размера.
   file = TMPFILE;

   fd = open(file, O_WRONLY | O_CREAT | O_TRUNC, 0600);

.    Файл с абсолютным путевым именем ("/sys/log") открывается для
записи. Все записи производятся в конец файла. Если файл не
существует, он создается с маской прав доступа 0600.
   logfd = open("/sys/log", O_WRONLY | O_APPEND | O_CREAT, 0600);

.    Файл, имя которого было передано main как первый аргумент,
открывается на чтение/запись.
   fdin = open(argv[1], O_RDWR);

.    Файл открывается на запись. Если он не существует, он создается.
Иначе вызов будет завершен неуспешно. Заметьте, что вызов open(2)
проверяется в теле оператора if. Программа должна предпринять некие
действия в случае неуспеха.
   if ((fdout = open(TMPFILE, O_WRONLY | O_CREAT | O_EXCL,
          0666)) == -1)
          perror(TMPFILE);

Флаг O_EXCL используется для предотвращения непреднамеренного
уничтожения уже существующего файла. Используется совместно с O_CREAT.
Вызов open(2) окончится неуспехом, если файл уже существует. Этот флаг
не означает, что программа открыла файл исключительно для себя, или
что это единственный файл, открытый программой.
Новое в SVR4: O_NONBLOCK, O_NOCTTY
                       ОТКРЫТИЕ ФАЙЛА - ПРИМЕРЫ
.    открытие файла для чтения
    acctfd = open(account, O_RDONLY);

.    открытие файла для записи
    file = TMPFILE;
    fd = open(file, O_WRONLY | O_CREAT |
            O_TRUNC, 0600);

.    открытие файла для дописывания
    logfd = open("/sys/log", O_WRONLY |
            O_APPEND | O_CREAT, 0600);

.    открытие файла для чтения и записи
    fdin = open( argv[1], O_RDWR );

.    создание нового файла для записи
    if ((fdout = open(TMPFILE, O_WRONLY |
            O_CREAT | O_EXCL, 0666)) == -1)
            perror(TMPFILE);