Шрифт:
Маска | Значение | Комментарий |
---|---|---|
S_IFMT | 0170000 | Маска для битовых полей типа файла |
S_IFSOCK | 0140000 | Сокет. |
S_IFLNK | 0120000 | Символическая ссылка |
S_IFREG | 0100000 | Обычный файл. |
S_IFBLK | 0060000 | Блочное устройство. |
S_IFDIR | 0040000 | Каталог. |
S_IFCHR | 0020000 | Символьное устройство. |
S_IFIFO | 0010000 | FIFO. |
S_ISUID | 0004000 | Бит setuid. |
S_ISGID | 0002000 | Бит setgid |
S_ISVTX | 0001000 | «Липкий» (sticky) бит. |
S_IRWXU | 0000700 | Маска для прав доступа владельца. |
S_IRUSR | 0000400 | Доступ на чтение для владельца. |
S_IWUSR | 0000200 | Доступ на запись для владельца. |
S_IXUSR | 0000100 | Доступ на исполнение для владельца. |
S_IRWXG | 0000070 | Маска для прав доступа группы. |
S_IRGRP | 0000040 | Доступ на чтение для группы. |
S_IWGRP | 0000020 | Доступ на запись для группы. |
S_IXGRP | 0000010 | Доступ на исполнение для группы. |
S_IRWXO | 0000007 | Маска для прав доступа остальных. |
S_IROTH | 0000004 | Доступ на чтение для остальных. |
S_IWOTH | 0000002 | Доступ на запись для остальных. |
S_IXOTH | 0000001 | Доступ на исполнение для остальных. |
Некоторые из этих масок служат цели изолирования различных наборов битов, закодированных в поле
•
•
•
•
Биты прав доступа и типа файла графически изображены на рис. 5.3.
Рис. 5.3. Биты прав доступа и типа файлов
Маски типов файлов стандартизованы главным образом для совместимости со старым кодом; они не должны использоваться непосредственно, поскольку такой код менее читаем, чем соответствующие макросы. Случается, что макрос реализован с использованием масок: довольно логично, но это не подходит для кода уровня пользователя.
Стандарт POSIX явным образом констатирует; что в будущем не будут стандартизированы новые битовые маски и что тесты для любых дополнительных разновидностей типов файлов, которые могут быть добавлены, будут доступны лишь в виде макросов
5.4.4.1. Сведения об устройстве
Стандарт POSIX не определяет значение типа
Когда истинно
Традиционно файлы устройств Unix кодируют старший и младший номера устройства в значении
Вместо размера файла
Обратите внимание, что дисковые устройства являются блочными устройствами, тогда как
Старший и младший номера устройства можно извлечь из значения