Linux программирование в примерах
Linux программирование в примерах читать книгу онлайн
В книге рассмотрены вопросы, связанные с программированием под Linux: файловый ввод/вывод, метаданные файлов, основы управления памятью, процессы и сигналы, пользователи и группы, вопросы интернационализации и локализации, сортировка, поиск и многие другие. Много внимания уделено средствам отладки, доступным под GNU Linux. Все темы иллюстрируются примерами кода, взятого из V7 UNIX и GNU. Эта книга может быть полезна любому, кто интересуется программированием под Linux.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Тип
time_t
st_atime
st_mtime
st_ctime
time_t
uid_t
gid_t
5.4.3. Только Linux: указание файлового времени повышенной точности
Ядра Linux 2.6 и более поздние предоставляют в
struct stat
st_atime_nsec
st_mtime_nsec
st_ctime_nsec
Некоторые другие системы также предоставляют такие поля с повышенной точностью времени, но имена соответствующих членов структуры
struct stat
utimes()
5.4.4. Определение типа файла
Вспомните, что в поле
st_mode
<sys/stat.h>
true
false
st_mode
struct stat stbuf;
char filename[PATH_МАХ]; /* PATH_MAX из <limits.h> */
/* ... поместить имя файла в filename ... */
if (stat(filename, &stbuf) < 0) {
/* обработать ошибку */
}
Когда система заполнила
stbuf
stbuf.st_mode
S_ISREG(stbuf.st_mode)
Возвращает
true
filename
S_ISDIR(stbuf.st_mode)
Возвращает
true
filename
S_ISCHR(stbuf.st_mode)
Возвращает
true
filename
S_ISBLK(stbuf.st_mode)
Возвращает
true
filename
S_ISFIFO(stbuf.st_mode)
Возвращает
true
filename
S_ISLNK(stbuf.st_mode)
Возвращает
true
filename
true
lstat()
stat()
fstat()
S_ISSOCK(stbuf.st_mode)
Возвращает
true
filename
ЗАМЕЧАНИЕ. В GNU/Linux эти макросы возвращают 1 для
true
false
true
/* Корректное использование */
if (S_ISREG(stbuf.st_mode)) ...
/* Heкорректное использование */
if (S_ISREG(stbuf.st_mode) ==1) ...
Наряду с макросами
<sys/stat.h>
mode_t
open()
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 | Доступ на исполнение для остальных. |