Linux программирование в примерах
Linux программирование в примерах читать книгу онлайн
В книге рассмотрены вопросы, связанные с программированием под Linux: файловый ввод/вывод, метаданные файлов, основы управления памятью, процессы и сигналы, пользователи и группы, вопросы интернационализации и локализации, сортировка, поиск и многие другие. Много внимания уделено средствам отладки, доступным под GNU Linux. Все темы иллюстрируются примерами кода, взятого из V7 UNIX и GNU. Эта книга может быть полезна любому, кто интересуется программированием под Linux.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Для простоты можете использовать статический (
static2. Доработайте
ch05-catdir.cstat()fmt_mode()3. Доработайте
ch05-catdir.c4. Добавьте такую опцию, что если имя файла является именем подкаталога, программа рекурсивно входит в него и отображает сведения о файлах (и каталогах) этого подкаталога. Необходим лишь один уровень рекурсии.
5. Если вы не работаете на системе GNU/Linux, запустите
ch05-trymkdir6. Напишите программу
mkdir7. В корневом каталоге,
/...pwdВначале программа должна найти имя текущего каталога, прочитав содержимое родительского каталога. Затем она должна продолжить собирать сведения о иерархии файловой системы, пока не достигнет корневого каталога.
Отображение имени каталога в обратном порядке, от текущего каталога до корневого, легко. Как будет справляться ваша версия
pwd8. Если вы написали
pwd9. Тщательно исследуйте функцию
rpl_utime()utime(file, NULL)if10. (Трудное) Прочтите страницу справки для chmod(1). Напишите код для анализа аргумента символических опций, который позволяет добавлять, удалять и устанавливать права доступа на основе владельца, группы, других и «всех».
Когда вы решите, что это работает, напишите свою собственную версию
chmodchmod()open()fchmod()Глава 6
Общие библиотечные интерфейсы — часть 1
В главе 5 «Каталоги и служебные данные файлов» мы видели, что непосредственное чтение каталога возвращает имена файлов в том порядке, в каком они хранятся в каталоге. Мы также видели, что
struct statВ данной главе представлена оставшаяся часть API, необходимая для полного использования значений компонентов
struct stattime_tuid_tgid_t6.1. Времена и даты
Значения времени хранятся в типе, который известен как
time_tНа системах GNU/Linux и Unix значения
time_ttime_tlong inttime_ttime_tДля получения текущего времени, вычисления разницы между двумя значениями
time_ttime_ttime_tОтдельный набор функций предоставляет доступ к текущему времени с разрешением, большим чем одна секунда. Функции работают с предоставлением двух различных значений, времени в виде секунд с начала Эпохи и числа микросекунд в текущей секунде. Эти функции описаны далее в разделе 14.3.1 «Время в микросекундах:
gettimeofday()6.1.1. Получение текущего времени:
time()difftime()Системный вызов
time()difftime()time_t#include <time.h> /* ISO С */time_t time(time_t *t);double difftime(time_t time1, time_t time0);time()tNULLt(time_t)(-1)errnoХотя ISO С не указывает, чем является значение
time_t
