The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Линус Торвальдс выступил с критикой дизайна файловых систем, opennews (?), 26-Мрт-09, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


46. "Я конечно придираюсь ;)"  +/
Сообщение от cvsup (ok), 26-Мрт-09, 19:21 
Только вам.
man 2 open
man 2 chmod
Ответить | Правка | Наверх | Cообщить модератору

48. "Я конечно придираюсь ;)"  +/
Сообщение от Sem (??), 26-Мрт-09, 20:08 
>Только вам.
>man 2 open
>man 2 chmod

Ну прежде, чем отсылать людей к манам, желательно их самому прочитать. Поведение с заданными флагами в мане не определено.

Ответить | Правка | Наверх | Cообщить модератору

63. "Я конечно придираюсь ;)"  +/
Сообщение от pavlinux (ok), 27-Мрт-09, 01:04 
O_CREAT
Если  файл не существует, то он будет создан. Владелец (uid) файла устанавливается в
фактический идентификатор владельца процесса. Группа (gid) устанавливается либо в
фактический идентификатор группы процесса или же  в  идентификатор  группы
родительского  каталога  (зависит от типа файловой системы и флагов программы mount,
а также прав доступа к родительскому каталогу.  См., например, флаги bsdgroups и
sysvgroups в файловой системе ext2, которые описаны в mount(8)).

O_TRUNC
Если файл  уже существует, является обычным файлом, а режим открытия позволяет запись
(то бишь это O_RDWR или O_WRONLY), то он будет обрезан до нулевой длины. Если файл
является FIFO или устройством терминала, то флаг  O_TRUNC  игнорируется. В противном
случае действие O_TRUNC не описано. (На многих версиях Linux этот флаг будет игнорирован;
на других версиях будет возвращена ошибка.)


1. Почему случай называют "Пративый..." :)
2. Чем отличаются "многие" версии Linux от "других"....

Ответить | Правка | Наверх | Cообщить модератору

118. "Я конечно придираюсь ;)"  +/
Сообщение от Nesk (?), 27-Мрт-09, 15:42 
>Только вам.
>man 2 open
>man 2 chmod

Причем тут chmod вообще не ясно. Режим открытия файла и права файла на диске - разные вещи.
Файл может иметь права 666, но открыть его можно, например, только на чтение. И в этом случае по полученному дескриптору записать не в файл не удастся!.

В приведенном Торвальдсе примере отсутствуют флаги, описывающие режим открытия файла (O_RDONLY  O_WRONLY O_RDWR). И встает вопрос, в каком режиме будет открыт файл (когда ни один из флагов не указан)?? И тут есть интересный момент, как видно из кода, флаги скалываются через "или" (|). А код соответствующий флагу O_RDONLY = 0х0 (если я не ошибаюсь). Значит, если не один из флагов не указан, то подразумевается как раз O_RDONLY. То есть записать в файл не получиться!!!!
Если бы вы глянули ман, вы бы могли заметить, что:
creat() is equivalent to open() with flags equal to O_CREAT|O_WRONLY|O_TRUNC.


Ответить | Правка | К родителю #46 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру