Книга: Linux программирование в примерах
6.6. Резюме
6.6. Резюме
• Время внутренне хранится в виде значений time_t
, представляющих «секунды с начала Эпохи». Эпоха для систем GNU/Linux и Unix начинается с полночи 1 января 1970 г. по UTC. Текущее время получается от системы с помощью системного вызова time()
, а difftime()
возвращает разницу в секундах между двумя значениями time_t
.
• Структура struct tm
представляет «разложенное время», которое является значительно более удобным представлением даты и времени. gmtime()
и localtime()
преобразуют значения time_t
в значения struct tm
, a mktime()
действует в обратном направлении.
• asctime()
и ctime()
осуществляют упрошенное форматирование значений времени, возвращая указатель на static
строку символов фиксированного размера и формата, strftime()
предусматривает гораздо более гибкое форматирование, включая значения на основе местных настроек.
• Сведения о часовом поясе доступны через вызов tzset()
. Поскольку стандартные процедуры действуют так, как если бы они автоматически вызывали tzset()
, необходимость в непосредственном вызове этой функции возникает редко.
• Стандартной процедурой для сортировки массивов является qsort()
. Используя предоставленную пользователем функцию сравнения и принимая параметры числа элементов массива и их размера, qsort()
может сортировать любые виды данных. Это обеспечивает значительную гибкость.
• scandir()
читает в массив struct dirent
каталог целиком. Для выбора того, какие элементы включить в массив и для обеспечения упорядочения элементов в массиве могут использоваться предоставленные пользователем функции alphasort()
является стандартной функцией для сортировки элементов каталога по имени; scandir()
передает функцию сортировки прямо через qsort()
.
• Функция bsearch()
работает подобно qsort()
. Она осуществляет быстрый бинарный поиск. Используйте ее, если цена линейного поиска перевешивает цену сортировки ваших данных. (Дополнительный API для поиска коллекций данных описан в разделе 14.4 «Расширенный поиск с помощью двоичных деревьев».)
• Базы данных пользователей и групп могут храниться в файлах на локальном диске или могут быть доступны через сеть. Стандартный API намеренно скрывает это различие. Каждая база данных обеспечивает как линейный просмотр всей базы данных, так и непосредственные запросы имени или ID пользователя/группы.
• Наконец, для тех случаев, когда недостаточно простого stat()
, isatty()
может вам сообщить, представляет ли открытый файл устройство терминала.