Выбрать главу

Что касается библиотеки C, основное внимание уделено GNU-библиотеке C (glibc) 2-й версии. Там, где это важно, приведены различия между версиями glibc 2.x.

Когда это издание готовилось к печати, было выпущено ядро Linux версии 2.6.35, а версия glibc 2.12 уже появилась. Книга написана применительно к этим версиям программного обеспечения. Изменения, которые появились в интерфейсах Linux и в библиотеке glibc после публикации этой книги, будут отмечены на сайте.

Использование программного интерфейса других языков программирования

Хотя примеры программ написаны на языке C, вы можете применять рассмотренные в этой книге интерфейсы из других языков программирования, в частности компилируемых языков C++, Pascal, Modula, Ada, FORTRAN, D, а также таких языков сценариев, как Perl, Python и Ruby. (Для Java необходим другой подход; см., например, работу [Rochkind, 2004].) Понадобятся иные приемы для того, чтобы добиться необходимых определений констант и объявлений функций (за исключением языка C++). Может также потребоваться дополнительная работа для передачи аргументов функции в том стиле, которого требуют соглашения о связях в языке С. Но, несмотря на эти различия, основные понятия не меняются, и вы обнаружите, что информация из этого руководства применима даже при работе с другим языком программирования.

Об авторе

Я начал работать в UNIX и на языке С в 1987 году, когда провел несколько недель за рабочей станцией HP Bobcat, имея при себе первое издание книги Марка Рохкинда «Эффективное UNIX-программирование» (Marc Rochkind, Advanced UNIX Programming) и распечатку руководства по командной оболочке С shell shell (она же csh) (в конечном итоге у нее был довольно потрепанный вид). Подход, который я применял тогда, я стараюсь применять и теперь. Рекомендую его также всем, кто приступает к работе с новой технологией в разработке ПО: потратьте время на чтение документации (если она есть) и пишите небольшие (но постепенно увеличивающиеся) тестовые программы до тех пор, пока не начнете уверенно понимать программное обеспечение. Я обнаружил, что в конечном итоге такой вариант самообучения хорошо окупает себя в плане сэкономленного времени. Многие примеры программ в книге сконструированы так, чтобы подтолкнуть вас к применению этого подхода.

Сначала я работал инженером-программистом и разработчиком ПО. В то же время мне очень нравится преподавание, и несколько лет я занимался им как в академической, так и в бизнес-среде. Я провел множество недельных курсов по обучению системному программированию UNIX, и этот опыт вдохновил меня на написание книги.

Я проработал в Linux почти в два раза меньше, чем в UNIX, но за это время мои интересы еще больше сфокусировались на границе между ядром и пространством пользователя — на программном интерфейсе Linux. Это вовлекло меня в несколько взаимосвязанных видов деятельности. Время от времени я предоставлял исходную информацию и отчеты об ошибках для стандарта POSIX/SUS, выполнял тестирование и экспертную оценку новых интерфейсов пространства пользователя, добавленных к ядру Linux (и помог обнаружить и исправить множество ошибок в коде и дизайне этих интерфейсов). Я также регулярно выступал на конференциях, посвященных интерфейсам и связанной с ними документации. Меня приглашали на несколько ежегодных совещаний Linux Kernel Developers Summit (саммит разработчиков ядра Linux). Общей нитью, которая связывает все эти виды деятельности воедино, является мой наиболее заметный вклад в мир Linux — работа над проектом man-pages (http://www.kernel.org/doc/man-pages/).

Названный проект лежит в основе страниц руководства Linux в разделах 2–5 и 7. Эти страницы описывают программные интерфейсы, которые предоставляются ядром Linux и GNU-библиотекой C, — тот же охват тем, что и в этой книге. Я занимался проектом man-pages более десяти лет. Начиная с 2004 года я сопровождаю его. В эту задачу входят приблизительно в равных долях написание документации, изучение исходного кода ядра и библиотеки, а также создание программ для проверки деталей. (Документирование интерфейса — прекрасный способ обнаружить ошибки в этом интерфейсе.) Кроме того, я самый продуктивный участник проекта man-pages: он содержит около 900 страниц, 140 из них написал я один и 125 — в соавторстве. Поэтому весьма вероятно, что вы уже читали что-либо из моих публикаций еще до того, как приобрели эту книгу. Надеюсь, что информация вам пригодилась, и также надеюсь, что эта книга окажется еще более полезной.