В дистрибутивы Linux входят man
-страницы с описанием большинства стандартных команд, системных вызовов и стандартных библиотечных функций. Интерактивная документация разбита на разделы, которым присвоены номера. Для программистов наиболее важными являются следующие разделы:
(1) пользовательские команды;
(2) системные вызовы:
(3) стандартные библиотечные функции:
(8) системные/административные команды.
Числа обозначают номера разделов. Для доступа к страницам интерактивной документации применяется команда man
. Она имеет вид man
, где sleep
(находящаяся в первом разделе):
% man sleep
А следующая команда вызывает страницу с описанием библиотечной функции sleep()
:
% man 3 sleep
Каждая man
-страница содержит однострочное резюме команды или функции. Команда whatis
имя отображает список всех man
-страниц (во всех разделах), связанных с указанным именем. Если не известно точно, описание какой команды или функции требуется, можно выполнить поиск по ключевому слову в строках резюме с помощью команды man -k
.
Страницы интерактивной документации содержат множество полезной информации и являются первым источником, к которому следует обращаться за помощью. В случае команды man
-страница описывает ее флаги и аргументы, входные и выходные значения, коды ошибок установки по умолчанию и т.п. В случае системного вызова или библиотечной функции описываются параметры и возвращаемые значения, коды ошибок и побочные эффекты, а также указывается, какие файлы заголовков нужно включать в программу при использовании функции.
1.5.2. Система Info
Система Info содержит гораздо более подробную документацию ко многим базовым компонентам GNU/Linux, а также к ряду других программ. Информационные страницы представляют собой гипертекстовые документы, напоминающие Web-страницы. Для запуска текстовой версии справочной системы Info достаточно ввести info
в командной строке. Появится меню с описанием иерархии документов, установленных в системе. Нажав
Среди наиболее полезных документов перечислим следующие:
■ gcc
— описание компилятора gcc
;
■ libc
— описание GNU-библиотеки языка С, содержащей множество системных вызовов,
■ gdb
— описание GNU-отладчика;
■ emacs
— описание редактора Emacs;
■ info
— описание самой системы Info.
Можно сразу вызвать нужную страницу, задав ее имя в командной строке:
% info libs
Те, кто в основном работают в Emacs, могут вызвать встроенный модуль просмотра документов Info, набрав M-x info
или C-h i
.
1.5.3. Файлы заголовков
Много информации о системных функциях можно почерпнуть из системных файлов заголовков. Они находятся в каталогах /usr/include
и /usr/include/sys
. Например, если компилятор сообщает об ошибке вызова системной функции, загляните в соответствующий файл заголовков и убедитесь, что реальный прототип функции соответствует описанному на man
-страннце.
В Linux множество деталей функционирования системных вызовов отражено в файлах заголовков расположенных в каталогах /usr/include/bits
, /usr/include/asm
и /usr/include/linux
. В частности, номера сигналов (механизм сигналов рассматривается в разделе 3.3, "Сигналы") определены в файле /usr/include/bits/signum.h
.
1.5.4. Исходные тексты
Linux — система с открытым кодом, не так ли? Верховным судьей, определяющим, как работает система, является исходный код самой системы. К нашему счастью, он доступен бесплатно. В имеющийся дистрибутив Linux могут входить исходные тексты всей системы и всех установленных в ней программ. (Правда, они не всегда записываются на жесткий диск. Инструкции по инсталляции исходных текстов содержатся в документации дистрибутива.) Если это не так, у вас есть право запросить их на основании общей открытой GNU-лицензии.
Исходный код ядра Linux обычно хранится в каталоге /usr/src/linux
. Это хороший источник информации о том, как работают процессы, виртуальная память и системные устройства. Большинство системных функций, упоминаемых в книге, реализовано в GNU- библиотеке языка С. Местоположение ее исходных текстов можно узнать в документации к дистрибутиву.
Глава 2
Написание качественных программ для среды GNU/Linux