9.4.3.3. Работа с флагами статуса файла и режимами доступа
9.4.3.3. Работа с флагами статуса файла и режимами доступа
В разделе 4.6.3 «Возвращаясь к open()» мы предоставили полный список флагов O_xx, которые принимает open(). POSIX разбивает их по функциям, классифицируя в соответствии с табл. 9.4.
Таблица 9.4. Флаги O_xx для open(), creat() и fcntl()
Категория Функции Флаги Доступ к файлу open(), fcntl() O_RDONLY, O_RDWR, O_WRONLY Создание файла open() O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC Статус файла open(), fcntl() O_APPEND, O_DSYNC, O_NONBLOCK, O_RSYNC, O_SYNCПомимо первоначальной установки различных флагов с помощью open(), вы можете использовать fcntl() для получения текущих установок, а также их изменения. Это осуществляется с помощью значений cmd F_GETFL и F_SETFL соответственно. Например, вы можете использовать эти команды для изменения установки неблокирующего флага, O_NONBLOCK, подобным образом:
int fd_flags;
if ((fd_flags = fcntl(fd, F_GETFL)) < 0)
/* обработать ошибку */
if ((fd_flags & O_NONBLOCK) != 0) { /* Установлен неблокирующий флаг */
fd_flags &= ~O_NONBLOCK; /* Сбросить его */
if (fcntl(fd, F_SETFL, fd_flags) != 0) /* Дать ядру новое значение */
/* обработать ошибку */
}
Помимо самих режимов именованная константа O_ACCMODE является маской, которую вы можете использовать для выделения из возвращаемого значения режимов прав доступа.
fd_flags = fcntl(fd, F_GETFL);
switch (fd_flags & O_ACCESS) {
case O_RDONLY:
/* ...действия только для чтения... */
break;
case O_WRONLY:
/* ...действия только для записи... */
break;
case O_RDWR:
/* ...действия для чтения и записи... */
break;
}
POSIX требует, чтобы O_RDONLY, O_RDWR и O_WRONLY были побитово различными, таким образом, гарантируется, что код, подобный только что показанному, будет работать и является простым способом определения того, как был открыт произвольный дескриптор файла.
Используя F_SETFL вы можете также изменить эти режимы, хотя по-прежнему применяется проверка прав доступа. Согласно справочной странице GNU/Linux fcnlt(2) флаг O_APPEND не может быть сброшен, если он использовался при открытии файла.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
9.1.5.1. Определение статуса завершения процесса
9.1.5.1. Определение статуса завершения процесса Статус завершения (exit status) (известный также под другими именами значения завершения (exit value), кода возврата (return code) и возвращаемого значения (return value)) представляет собой 8-битовое значение, которое родитель может использовать
9.1.6. Использование статуса завершения порожденного процесса
9.1.6. Использование статуса завершения порожденного процесса Когда процесс заканчивается, нормальным ходом событий для ядра является освобождение всех его ресурсов. Ядро сохраняет статус завершения законченного процесса, также, как сведения о ресурсах, которые он
Установка размера файла, инициализация файла и разреженные файлы
Установка размера файла, инициализация файла и разреженные файлы Функция SetEndOfFile позволяет переустановить размер файла, используя текущее значение указателя файла для определения его размера. Возможно как расширение, так и усечение файла. В случае расширения файла
Получение статуса семафора
Получение статуса семафора int sem_getvalue(sem_t* sem, int* value);Эта функция используется преимущественно для отладки операций над семафорами. По адресу, указанному в value, устанавливается текущее значение счетчика семафора. Поскольку значение счетчика семафора может измениться в
Владелец файла и права доступа
Владелец файла и права доступа Средства защиты Linux базируются на понятиях принадлежности файла определенному владельцу и правах доступа к нему, принятых в системе UNIX. Однако SMB/CIFS использует те же признаки несколько по-другому. Средства SMB/CIFS регистрируют пользователей,
Объявление вашего статуса
Объявление вашего статуса Программа может сообщить всем вашим друзьям о вашем статусе, т. е. о том, находитесь вы в сети или нет, свободны вы для разговора или нет, на месте вы или нет, либо вы невидимы, или вас не нужно беспокоить. Причем программа сообщает об этом не просто
Изменение статуса
Изменение статуса Статус легко изменить следующими способами:1. Выберите в меню Файл команду Изменить режим в сети и в раскрывающемся списке укажите режим связи.2. Вызовите раскрывающийся список, щелкнув на треугольничке в левом нижнем углу диалогового окна программы
Изменение статуса в сети
Изменение статуса в сети Программа отображает ваш статус определенным набором значков, посмотрев на которые, другие пользователи могут понять, находитесь ли вы в сети, или вас нет на месте, или вы просите не беспокоить. Такой значок располагается в нижней левой части
Помещение значка статуса на веб-страницу
Помещение значка статуса на веб-страницу В качестве бонуса ко всем замечательным возможностям Skype у вас есть еще одна – отображение на веб-странице пользователя его статуса в Skype с помощью специальной кнопки (значка). Это значит, что любой человек, зашедший на вашу
1.4.5. Понятие владельца файла, права доступа к файлам и каталогам
1.4.5. Понятие владельца файла, права доступа к файлам и каталогам Первоначально в DOS, а затем и в Windows не было такого понятия, как "владелец файла" и "права доступа к файлу". Права доступа к файлам и каталогам появились только в файловой системе NTFS, но фактически NTFS "пришла в
Установка статуса
Установка статуса Щелкнув по значку ICQ правой кнопкой и выбрав меню My Status, вы можете вручную установить свой статус в сети ICQ при входе в сеть. Базовый, основной статус, который и установлен у вас по умолчанию, подразумевает полную открытость: все видят вас, знают, что вы в
5.8. Права доступа и атрибуты файла. Команды chown, chmod и chattr
5.8. Права доступа и атрибуты файла. Команды chown, chmod и chattr 5.8.1. Права доступа к файлам и каталогам Для каждого каталога и файла вы можете задать права доступа. Точнее права доступа автоматически задаются при создании каталога (файла), а вы, при необходимости, можете их
Практическая работа 59. Создание новой учетной записи и изучение действующих разграничений доступа к файлам
Практическая работа 59. Создание новой учетной записи и изучение действующих разграничений доступа к файлам Задание. Создать новую учетную запись и настроить ее параметры. Проверить действие прав доступа к личным папкам пользователей. ВНИМАНИЕ Для выполнения этой
Онлайновый протокол статуса сертификата
Онлайновый протокол статуса сертификата Онлайновый протокол статуса сертификата OCSP - относительно простой протокол (типа "запрос-ответ") для получения информации об аннулировании от доверенного субъекта, называемого OCSP-респондером . OCSP-запрос состоит из номера версии
Проверка статуса сертификата
Проверка статуса сертификата Эта проверка завершается успешно, если издатель не аннулировал данный сертификат. Основным средством проверки статуса сертификата являются списки САС, но могут использоваться и другие альтернативные средства
Повышение статуса идентификации
Повышение статуса идентификации И Бертильон, и Хершель понимали, что технологии идентификации в современном обществе могут использоваться с двумя целями. С одной стороны, эти технологии востребованы правоохранительными органами. Имея в своем распоряжении реестр