Данная книга предназначена для опытных (или не столь опытных, но желающих обучаться) программистов, которые намереваются разрабатывать программное обеспечение для Linux или переносить его в Linux с других платформ. Эта книга понадобиться во время обучения программированию в Linux, потом же она станет настольным справочником. После написания первых трех глав первого издания мы использовали черновики как справочный материал во время повседневной работы.
Второе издание книги было существенно обновлено. Кроме того, был открыт сайт, посвященный книге, — http://ladweb.net/.
Операционная система Linux разработана так, чтобы быть максимально похожей на Unix. Книга даст вам хорошие основы программирования в Unix-стиле. Linux существенно ничем не отличается от Unix; впрочем, некоторые различия есть, но они не более значительны, чем типичные отличия между двумя версиями Unix. Эта книга представляет собой руководство по программированию Unix, написанное с точки зрения Linux, с информацией, специфической для Linux.
Linux также имеет уникальные расширения, например, возможности прямого доступа к экрану (см. главу 21), а также средства, используемые в нем более часто, чем в других системах вроде библиотеки >popt
(см. главу 26). Материал этой книги охватывает многие такие средства и возможности, поэтому вы сможете создавать программы, по- настоящему пользующиеся преимуществами Linux.
• Если вы являетесь программистом на языке С, но не знакомы ни с Unix, ни с Linux, то внимательное чтение этой книги и работа с примерами окажет серьезную помощь на пути вашего становления квалифицированным программистом для Linux. Воспользовавшись дополнительно системной документацией, вы легко сможете перейти в любую версию Unix.
• Если вы являетесь профессиональным программистом, эта книга облегчит вам переход в Linux. Мы постарались упростить поиск всей необходимой информации. Мы также тщательно раскрываем темы, вызывающие затруднения даже у опытных программистов в Unix, например, группы процессов и сеансов, управление заданиями и работа с >tty
.
• Если вы являетесь программистом в Linux, в данной книге раскрыты "проблемные" темы и облегчены многие задачи программирования. Почти каждая глава покажется вам знакомой, поскольку вы уже обладаете необходимыми знаниями Linux. Тем не менее, несмотря на имеющийся опыт, материал этой книги вы сочтете полезным.
Настоящая книга отличается от стандартных пособий по программированию в Unix, поскольку является специфической для определенной операционной системы. Мы не пытаемся охватить все различия систем, подобных Unix; это не принесет особой пользы программистам, ориентированным на Linux и Unix, или программистам на языке С, которые с Linux или Unix не знакомы. По своему опыту мы знаем, что навыки программирования в любой системе, подобной Unix, облегчают изучение остальных систем.
Данная книга не охватывает всех подробностей программирования в Linux. В ней не рассказывается о базовом интерфейсе, определенном ANSI/ISO С — об этом можно прочитать в других книгах. В ней не рассматриваются другие языки программирования, доступные в Linux, а также графические библиотеки, являющиеся идентичными независимо от используемой системы — это рассматривается в книгах, ориентированных на упомянутые области. Мы предоставляем информацию, необходимую для прохождения пути от программиста на С для систем, подобных Windows, Macintosh или даже DOS, до программиста на С для Linux.
Структурно книга состоит из четырех частей.
• Первая часть представляет собой введение в Linux, описывая операционную систему, условия лицензии и онлайновую системную документацию.
• Во второй части рассматриваются наиболее важные аспекты среды разработки — компиляторы, компоновщик и загрузчик, а также некоторые отладочные инструменты, не столь широко применяемые на других платформах.
• В третьей, основной, части рассматривается интерфейс ядра и системных библиотек, в первую очередь задуманных в качестве интерфейса ядра. В этой части только главы 19, 20 и 21 обладают ярко выраженной спецификой Linux; внимание в основном уделяется общему программированию в Unix с точки зрения Linux. В новой во втором издании главе 22 описаны основы разработки защищенных программ.
• Четвертая часть дополняет информацию предыдущих частей. Она включает описания некоторых важных библиотек, которые предоставляют интерфейсы, более зависимые от ядра. По сути, эти библиотеки не являются специфическими для Linux, но некоторые из них используются чаще в системах Linux, чем в других системах.
Если вы уже знакомы с программированием в Linux или Unix, можете читать главы этой книги в любом порядке, пропуская то, что вас не интересует. Если вы не знакомы с Linux или Unix, большинство глав будут полезны, но для начала рекомендуется чтение глав 1, 2, 4, 5, 9, 10, 11 и 14, поскольку они предоставляют большинство информации, знание которой необходимо для чтения других глав. В частности, в главах 10, 11 и 14 формируется основа модели программирования в Unix и Linux.
Следующие книги, несмотря на то, что некоторые темы в них совпадают, в основном дополняют данную книгу, будучи проще, сложнее, либо рассматривая сходные темы.