[<<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);