glibc , сокращенная форма библиотеки GNU C , является реализацией проекта GNU стандартной библиотеки C . API стандартной библиотеки C объявлен в привычных заголовочных файлах, таких как <stdio.h>
и <stdlib.h>
(полный список заголовочных файлов см. В ссылке на Википедию).
API операционной системы POSIX предоставляется через <unistd.h>
, который в основном переносит системные вызовы, такие как fork
, и операции ввода-вывода, такие как read
/ write
.
GLib - это набор системных библиотек, написанных на C и разработанных GNOME (часть проекта GNU). Цитата из Википедии (к сожалению, без источника)
GLib предоставляет расширенные структуры данных, такие как фрагменты памяти, списки с двойной и однократной связью, хеш-таблицы, динамические строки и утилиты строк, такие как лексический сканер, фрагменты строк (группы строк), динамические массивы, сбалансированные двоичные деревья, N-арные деревья, кварки (двусторонняя ассоциация строки и уникальный целочисленный идентификатор), списки ключевых данных, отношения и кортежи. Кэши обеспечивают управление памятью.
GLib реализует функции, которые обеспечивают потоки, программирование потоков и связанные с ними средства, такие как примитивный доступ к переменным, мьютексы, асинхронные очереди, защищенные пулы памяти, передача сообщений и ведение журнала, функции перехвата (регистрация обратных вызовов) и таймеры. GLib также включает средства передачи сообщений, такие как преобразование порядка байтов и каналы ввода / вывода.
Некоторые другие функции GLib включают в себя:
- стандартные макросы
- предупреждения и утверждения
- динамическая загрузка модулей
Зачем использовать функции GLib?
Gnulib , также называемый Библиотека переносимости GNU , представляет собой набор кода GNU, помогающий при написании переносимого кода. С руководство :
Gnulib предназначен для того, чтобы быть каноническим источником большинства важных «переносимых» и / или общих файлов для проектов GNU. Это файлы, предназначенные для совместного использования на уровне источника; Gnulib не является типичной библиотекой, предназначенной для установки и связывания. Таким образом, в отличие от большинства проектов, Gnulib обычно не генерирует исходный дистрибутив tarball; вместо этого разработчики получают модули непосредственно из исходного хранилища.
Многие функции реализуют обходные пути переносимости для функций ISO C и POSIX .