Linux программирование в примерах
Linux программирование в примерах читать книгу онлайн
В книге рассмотрены вопросы, связанные с программированием под Linux: файловый ввод/вывод, метаданные файлов, основы управления памятью, процессы и сигналы, пользователи и группы, вопросы интернационализации и локализации, сортировка, поиск и многие другие. Много внимания уделено средствам отладки, доступным под GNU Linux. Все темы иллюстрируются примерами кода, взятого из V7 UNIX и GNU. Эта книга может быть полезна любому, кто интересуется программированием под Linux.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
На практике это означает, что вы сами почти никогда не будете вызывать
tzset()6.1.5.1. Системы BSD:
timezone()timezoneНекоторые производные от BSD 4.4 системы вместо переменной POSIX
timezonetimezone()#include <time.h> /* BSD */char *timezone(int zone, int dst);Аргумент
zonedstСистемы GNU/Linux хранят информацию о часовых поясах в файлах и каталогах в
/usr/share/zoneinfo$ <b>cd /usr/share/zoneinfo</b>$ <b>ls -FC</b>Africa/ Canada/ Factory Iceland MST7MDT Portugal W-SUAmerica/ Chile/ GB Indian/ Mexico/ ROC WETAntarctica/ Cuba GB-Eire Iran Mideast/ ROK ZuluArctic/ EET GMT Israel NZ Singapore iso3166.tabAsia/ EST GMT+0 Jamaica NZ-CHAT SystemV/ posix/Atlantic/ EST5EDT GMT-0 Japan Navajo Turkey posixrulesAustralia/ Egypt GMT0 Kwajalein PRC UCT right/Brazil/ Eire Greenwich Libya PST8PDT US/ zone.tabCET Etc/ HST MET Pacific/ UTCCST6CDT Europe/ Hongkong MST Poland UniversalКогда возможно, этот каталог использует прямые ссылки для предоставления одних и тех же данных с разными именами. Например, файлы
EST5EDTUS/Eastern$ <b>ls -il EST5EDT US/Eastern</b>724350 -rw-r--r-- 5 root root 1267 Sep б 2002 EST5EDT724350 -rw-r--r-- 5 root root 1267 Sep 6 2002 US/EasternЧастью установки системы является выбор часового пояса. Надлежащий файл данных часового пояса помещается затем в
/etc/localtime$ <b>file /etc/localtime</b>/etc/localtime: timezone dataНа нашей системе это автономная копия файла для нашего часового пояса. На других системах это может быть символическая ссылка на файл в
/usr/share/zoneinfo/usrПеременная окружения
TZ$ <b>date</b> /* Дата и время в часовом поясе по умолчанию */Wed Nov 19 06:44:50 EST 2003$ <b>export TZ=PST8PDT</b> /* Смена часового пояса на Западное побережье США */$ <b>date</b> /* Вывести дату и время */Wed Nov 19 03:45:09 PST 2003Широкое распространение этой функции делает переносимое использование переменной POSIX
timezonestrftime()6.2. Функции сортировки и поиска
Сортировка и поиск являются двумя фундаментальными операциями, потребность в которых постоянно возникает во многих приложениях Библиотека С предоставляет ряд стандартных интерфейсов для осуществления этих задач.
Все процедуры разделяют общий лейтмотив; данные управляются через указатели
void*sortПоскольку ни один алгоритм не работает одинаково хорошо для всех приложений, имеются несколько различных наборов библиотечных процедур для сопровождения искомых коллекций данных. Данная глава рассматривает лишь один простой интерфейс для поиска. Другой, более развитый интерфейс описан в разделе 14.4 «Расширенный поиск с использованием двоичных деревьев». Более того, мы намеренно не объясняем лежащие в основе алгоритмы, поскольку данная книга об API, а не об алгоритмах и структурах данных. Важно понять, что API можно рассматривать как «черные ящики», выполняющие определенную работу без необходимости понимания подробностей их работы.
6.2.1. Сортировка:
qsort()Сортировка выполняется с помощью
qsort()#include <stdlib.h> /* ISO С */void qsort(void *base, size_t nmemb, size_t size, int (*compare)(const void*, const void*));Название
qsort()qsort()qsort()void *baseАдрес начала массива.
