Разработка приложений в среде Linux - [19]

Шрифт
Интервал

в формате Texinfo.

Глава 6

Библиотека GNU C

Библиотека GNU С (>glibc) — это стандартная библиотека языка С, разработанная для Linux-систем. Существуют и другие библиотеки С, которые иногда используются в определенных целях (например, очень маленькое подмножество стандартных библиотек С применяется во встроенных системах и для начальной загрузки). Но во всех дистрибутивах Linux стандартной библиотекой языка С, предоставляющей значимый объем функциональности, является >glibc. Именно эта библиотека и описывается в настоящей книге.

6.1. Выбор возможностей >glibc

В >glibc существует набор макросов для выбора возможностей. Эти макросы используются для выбора стандарта, которому будет подчиняться >glibc. Иногда стандарты конфликтуют между собой, a >glibc позволяет выбирать именно тот набор стандартов (формальный, де-юре, и неформальный, де-факто), которым нужно соответствовать полностью либо частично. Технически такие макросы называются макросами проверки возможностей.

Знание этих макросов необходимо, так как набор макросов, определенных по умолчанию, не обеспечивает полную функциональность >glibc. Некоторые механизмы, описанные в этой книге, в выбранном по умолчанию наборе функций не доступны; далее мы опишем макросы, необходимые для включения каждого такого механизма.

Макросы проверки возможностей разработаны для определения стандартов (де-юре или де-факто), и в некоторых случаях они определяют, каким именно версиям этих стандартов должна соответствовать >glibc. Это соглашение часто не включает определения функций и макросов, не указанных стандартом, в стандартных заголовочных файлах. Это значит, что приложение, написанное в соответствии со стандартом, может определять свои собственные функции и макросы, не конфликтуя с расширениями, которые этим стандартом не определены.

Макросы проверки возможностей не гарантируют того, что приложение будет полностью совместимо со стандартами, определяемыми набором макросов. Настройка макроса проверки возможности может обнаружить использование непереносимых расширений, но при этом не будет обнаружено использование, скажем, заголовочных файлов, которые полностью не определены стандартом.

Макросы определяются в системном заголовочном файле >feature.h, который не должен включаться непосредственно. Взамен его включают все другие заголовочные файлы, которые зависят от содержимого >feature.h.

Набор макросов по умолчанию содержит >_SVID_SOURCE=1, >_BSD_SOURCE=1, >_POSIX_SOURCE=1 и >_POSIX_C_SOURCE=199506L. Описание каждой из этих опций можно найти ниже, но все это, по сути, транслируется в поддержку возможностей стандарта 1995 POSIX (этот стандарт использовался до объединения стандартов POSIX и Single Unix), всех стандартных функций System V и всех функций BSD, которые не конфликтуют с функциями System V. Данного набора макросов достаточно для большинства программ.

При определении в >gcc опции >-ansi, как было описано ранее, автоматически определяется внутренний макрос >__STRICT_ANSI__, который отключает все макросы, определенные по умолчанию.

За исключением >__STRICT_ANSI__, который представляет собой специальный макрос (и должен настраиваться только компилятором в контексте опции командной строки >-ansi), эти макросы имеют накопительный характер, то есть можно определять любые их комбинации. Точное определение изменений >_BSD_SOURCE зависит от настройки других макросов (более детально об этом — ниже); все >остальные макросы — исключительно накопительные.

Некоторые макросы определяются различными версиями POSIX или других стандартов, другие являются общими, а третьи могут использоваться только в >glibc.

>_POSIX_SOURCEЕсли указан этот макрос, становятся доступными все интерфейсы, определенные как часть оригинальной спецификации POSIX.1. Данный макрос был определен в первоначальном стандарте POSIX.1-1990.
>_POSIX_C_SOURCEЭтот макрос может заменять >_POSIX_SOURCE. Если установлен в 1, то эквивалентен >_POSIX_SOURCE. Если его значение больше либо равно 2, макрос включает интерфейсы С, соответствующие POSIX.2, и задействует регулярные выражения. Если значение больше либо равно 199309L, макрос включает в себя дополнительные интерфейсы С, соответствующие пересмотренному в 1993 году стандарту POSIX, в частности, включая функциональность реального времени. Если его значение больше либо равно 199506L (по умолчанию), макрос включает дополнительные интерфейсы С, соответствующие пересмотренному в 1995 году стандарту POSIX, в частности, включая потоки POSIX. Этот макрос был описан версией POSIX, выпущенной после 1990 года для разграничения поддержки различных версий стандартов POSIX (а теперь также и Single Unix). Во многих случаях полностью замещается >_XOPEN_SOURCE.
>_XOPEN_SOURCEМакрос >_XOPEN_SOURCE определен XSI-частью стандарта Single Unix и описывает логическое надмножество интерфейсов, включенных с помощью >_POSIX_C_SOURCE. Этот макрос также был определен XPG. Если макрос определен, указываются функциональные возможности из начального стандарта XPG4 (Unix95). Если макрос определен со значением >500, включаются функциональные возможности из стандарта XPG5 (Unix98, SuS версии 2). Если установлено значение

Рекомендуем почитать
Это ваше Fido

Одно из немногих изданий на русском языке, которое посвящено старейшей глобальной компьютерной сети "Fidonet". Сатирический справочник о жизни и смерти самого древнего сетевого сообщества, которое до сих пор существует среди нас.


Безопасность информационных систем

В пособии излагаются основные тенденции развития организационного обеспечения безопасности информационных систем, а также подходы к анализу информационной инфраструктуры организационных систем и решению задач обеспечения безопасности компьютерных систем.Для студентов по направлению подготовки 230400 – Информационные системы и технологии (квалификация «бакалавр»).


UNIX — универсальная среда программирования

В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями shell.Для программистов-пользователей операционной системы UNIX.


QNX/UNIX: Анатомия параллелизма

Книга адресована программистам, работающим в самых разнообразных ОС UNIX. Авторы предлагают шире взглянуть на возможности параллельной организации вычислительного процесса в традиционном программировании. Особый акцент делается на потоках (threads), а именно на тех возможностях и сложностях, которые были привнесены в технику параллельных вычислений этой относительно новой парадигмой программирования. На примерах реальных кодов показываются приемы и преимущества параллельной организации вычислительного процесса.


Виртуальные  машины: несколько компьютеров в  одном

Применение виртуальных машин дает различным категориям пользователей — от начинающих до IT-специалистов — множество преимуществ. Это и повышенная безопасность работы, и простота развертывания новых платформ, и снижение стоимости владения. И потому не случайно сегодня виртуальные машины переживают второе рождение.В книге рассмотрены три наиболее популярных на сегодняшний день инструмента, предназначенных для создания виртуальных машин и управления ими: Virtual PC 2004 компании Microsoft, VMware Workstation от компании VMware и относительно «свежий» продукт — Parallels Workstation, созданный в компании Parallels.


Недокументированные и малоизвестные возможности Windows XP

Книга содержит подробные сведения о таких недокументированных или малоизвестных возможностях Windows XP, как принципы работы с программами rundll32.exe и regsvr32.exe, написание скриптов сервера сценариев Windows и создание INF-файлов. В ней приведено описание оснасток, изложены принципы работы с консолью управления mmc.exe и параметрами реестра, которые изменяются с ее помощью. Кроме того, рассмотрено большое количество средств, позволяющих выполнить тонкую настройку Windows XP.Эта книга предназначена для опытных пользователей и администраторов, которым интересно узнать о нестандартных возможностях Windows.