Как и в случае mode
— устанавливаемые права доступа к файлу. При этом выполняется ряд правил:
□ Если идентификатор группы (GID) создаваемого файла не совпадает с эффективным идентификатором группы (EGID) или идентификатором одной из дополнительных групп процесса, бит SGID аргумента mode
очищается (если он был установлен).
□ Очищаются все биты, установленные в маске процесса
□ Очищается флаг Sticky bit.
Права доступа к файлу обсуждались в главе 1. Более детальная информация приведена в разделе "Права доступа" этой главы.
Если файл уже существует, его длина сокращается до 0, а права доступа и владельцы сохраняются прежними. Вызов
open(path, O_WRONLY | O_CREAT | O_TRUNC, mode);
Функция
Функция
#include
int close(int fildes);
В случае успеха errno
указывает на причину неудачи.
Многие программы явно не используют
Функции
Функция
int dup(int fildes);
Файловый дескриптор fildes
должен быть предварительно получен с помощью функций fildes
. Оба указывают на один и тот же файл, одно и то же смещение, начиная с которого будет производиться следующая операция чтения или записи (файловый указатель), и определяют один и тот же режим работы с файлом. Правило размещения нового файлового дескриптора аналогично используемому в функции
Функция
int dup2(int fildes, int fildes2);
Файловый дескриптор, подлежащий дублированию, передается в первом аргументе (fildes
), а новый дескриптор должен быть равен fildes2
. Если дескриптор fildes2
уже занят, сначала выполняется функция close(fildes2)
.
В качестве примера использования системного вызова
$ runme >/tmp/file1 2>&1
Фрагмент кода
...
/* Закроем ассоциацию стандартного потока вывода (1)
с файлом (терминалом) */
close(1);
/* Назначим стандартный поток вывода в файл
/tmp/file1 (fd==1) */
fd = open("/tmp/file1", O_WRONLY | O_CREAT | O_TRUNC);
/* Выполним слияние потоков */
dup2(fd, 2);
...
Функция
С файловым дескриптором связан O_APPEND
, равным размеру файла. С помощью функции
#include
off_t lseek(int fildes, off_t offset, int whence);
Интерпретация аргумента offset
зависит от аргумента whence
, который может принимать следующие значения:
SEEK_CUR | Указатель смещается на offset байт от текущего положения |
SEEK_END | Указатель смещается на offset байт от конца файла |
SEEK_SET | Указатель устанавливается равным offset |
В случае успеха функция возвращает положительное целое, равное текущему значению файлового указателя.
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии