Linux программирование в примерах
Linux программирование в примерах читать книгу онлайн
В книге рассмотрены вопросы, связанные с программированием под Linux: файловый ввод/вывод, метаданные файлов, основы управления памятью, процессы и сигналы, пользователи и группы, вопросы интернационализации и локализации, сортировка, поиск и многие другие. Много внимания уделено средствам отладки, доступным под GNU Linux. Все темы иллюстрируются примерами кода, взятого из V7 UNIX и GNU. Эта книга может быть полезна любому, кто интересуется программированием под Linux.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Функция
rpl_utime()utime()NULLutime()utime_null()5.5.4. Использование
fchown()fchmod()В исходных системах Unix были только системные вызовы
chown()chmod()Однако, после открытия файла условие состязания больше не представляет проблему. Программа может использовать
stat()fstat()st_devst_inostruct statКогда программа знает, что файлы те же самые, владение или права доступа могут быть изменены с помощью
fchown()fchmod()Эти системные вызовы, также как
lchown()Соответствующих функций
futime()lutime()futime()lutime()5.6. Резюме
• Иерархия файлов и каталогов, как она видится пользователю, является одним логическим деревом, корень которого находится в
/• Каталоги осуществляют связь между именами файлов и индексами. Концептуально содержимое каталога, которое является просто последовательностью пар (индекс, имя). Каждый элемент каталога для файла называется (прямой) ссылкой, а файлы могут иметь множество ссылок. Прямые ссылки, поскольку они работают лишь по номеру индекса, все должны находиться в одной файловой системе. Символические ссылки являются указателями на файлы или каталоги и работают на основе имени файла, а не номера индекса, поэтому их использование не ограничено одной и той же файловой системой.
• Прямые ссылки создаются с помощью
link()symlink()unlink()rename()• Каталоги создаются с помощью
mkdir()rmdir()...remove()unlink()rmdir()• Каталоги обрабатываются с помощью функций
opendir()readdir()rewinddir()closedir()struct direntd_nametelldir()seekdir()• Вспомогательные данные получаются с помощью семейства системных вызовов
stat()struct stat• Макрос
S_IS<i>xxx</i>()<sys/stat.h>major()minor()<sys/sysmacros.h>dev_t• Символические ссылки можно проверить, использовав
lstat()st_sizestruct statreadlink()• Несколько разнообразных системных вызовов обновляют другие данные: семейство
chown()chmod()utime()Упражнения
1. Напишите программу '
const char *fmt_mode(mode_t mode)mode_tst_modestruct statВывод должен представлять строку в 10 символов, идентичную первому полю вывода '
ls -lКогда установлены биты
S_ISUIDS_IXUSRsxI_ISUIDSS_ISGIDS_IXGRPS_ISVTXS_IXOTHtS_ISVTXT
