Тип
time_tst_atimest_mtimest_ctimetime_tuid_tgid_t5.4.3. Только Linux: указание файлового времени повышенной точности
Ядра Linux 2.6 и более поздние предоставляют в
struct statst_atime_nsec st_mtime_nsec st_ctime_nsec Некоторые другие системы также предоставляют такие поля с повышенной точностью времени, но имена соответствующих членов структуры
struct statutimes()5.4.4. Определение типа файла
Вспомните, что в поле
st_mode<sys/stat.h>truefalsest_modestruct stat stbuf;char filename[PATH_МАХ]; /* PATH_MAX из <limits.h> *//* ... поместить имя файла в filename ... */if (stat(filename, &stbuf) < 0) { /* обработать ошибку */}Когда система заполнила
stbufstbuf.st_modeS_ISREG(stbuf.st_mode)Возвращает
truefilenameS_ISDIR(stbuf.st_mode)Возвращает
truefilenameS_ISCHR(stbuf.st_mode)Возвращает
truefilenameS_ISBLK(stbuf.st_mode)Возвращает
truefilenameS_ISFIFO(stbuf.st_mode)Возвращает
truefilenameS_ISLNK(stbuf.st_mode)Возвращает
truefilenametruelstat()stat()fstat()S_ISSOCK(stbuf.st_mode)Возвращает
truefilenameЗАМЕЧАНИЕ. В GNU/Linux эти макросы возвращают 1 для
truefalsetrue/* Корректное использование */if (S_ISREG(stbuf.st_mode)) .../* Heкорректное использование */if (S_ISREG(stbuf.st_mode) ==1) ...Наряду с макросами
<sys/stat.h>mode_topen()creat()Таблица 5.2. Битовые маски POSIX для типов файлов и прав доступа в
<sys/stat.h>| Маска | Значение | Комментарий |
|---|---|---|
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 | Доступ на исполнение для остальных. |