Введение
Введение
Операционная система Linux вихрем ворвалась в мир компьютеров. Было время, когда выбор пользователей был ограничен коммерческими операционными системами и приложениями. У пользователей не было возможности исправлять или улучшать эти программы и часто они были вынуждены принимать довольно жесткие лицензионные условия. С появлением GNU/Linux и других систем с открытым кодом все изменилось. Теперь в распоряжении пользователей, администраторов и разработчиков есть бесплатная операционная система с множеством утилит приложений и со всеми исходными текстами.
Большая доля успеха GNU/Linux приходится на открытую природу этой системы. Поскольку исходные тексты программ общедоступны, любой может принять участие в их разработке, либо путем исправления незначительной ошибки либо путем распространения целого приложения. Это подвигло тысячи разработчиков во всем мире на создание новых программных компонентов и улучшение операционной системы до такой степени, что она сравнялась по своим возможностям с любой коммерческой ОС. В дистрибутивы Linux входят тысячи программ и приложений.
Своим успехом ОС Linux обязана также философии UNIX, Многие программные компоненты. появившиеся в AT&T UNIX и BSD UNIX, продолжили свое существование в Linux и заложили основу для написания новых программ. Философия UNIX, заключающаяся в организации взаимодействия множества небольших утилит командной строки, является главным принципом организации ОС Linux, делающим эту систему столь мощной. Даже когда программы оснащены пользовательским интерфейсом, лежащие в их основе команды доступны для написания сценариев автоматизации. Множество сложных задач можно решить, объединяя существующие команды и программы в простых сценариях.
GNU и Linux
Операционная система Linux названа в честь Линуса Торвальдса, ее автора и создателя ядра системы. Ядро — это программа, которая выполняет основные функции операционной системы. Оно взаимодействует с аппаратными устройствами, выделяет память и другие ресурсы, позволяет нескольким программам работать одновременно, управляет файловыми системами и т.д.
Ядро само по себе не располагает средствами взаимодействия с пользователями. Оно не может выдать даже простую строку приглашения на ввод команд. Ядро не позволяет пользователям редактировать файлы, взаимодействовать с другими компьютерами или писать программы. Для решения всех этих задач требуется большое число других программ, включая интерпретаторы команд, редакторы и компиляторы. Многие из этих программ пользуются библиотеками функций общего назначения, не включенными в ядро.
В системах GNU/Linux большинство таких программ разработано в рамках проекта GNU.[1] Многие из них были написаны раньше чем появилось ядро Linux. Цель проекта GNU — "создание полноценной операционной системы наподобие UNIX оснащенной бесплатным программным обеспечением" (цитата с Web-узла www.gnu.org).
Ядро Linux и GNU программы составляют очень мощную комбинацию которую чаще всего называют просто "Linux". Но без GNU-программ система не будет работать, как и без ядра. Поэтому во многих случаях мы говорим GNU/Linux.
Общая лицензия GNU
Исходные тексты программ, приведенные в этой книге, распространяются на условиях общей лицензии GNU (GPL, GNU General Public License), которая приведена в приложении Е, "Общая лицензия GNU". Таким же способом лицензируется большинство бесплатных программ, особенно в рамках GNU/Linux, например ядро системы. Прежде чем использовать представленные исходные тексты, ознакомьтесь с условиями данной лицензии.
Общая лицензия GNU обсуждается на Web-узле www.gnu.org/copyleft наряду с другими лицензиями на бесплатное распространение программного обеспечения. Найти информацию о лицензиях на распространение программ с открытым кодом можно по адресу http://www.opensourсе.org/licenses/index.html.
Для кого предназначена эта книга
Эта книга предназначена для трех категорий читателей.
? Возможно, наш читатель является разработчиком, имеющим опыт создания программ для GNU/Linux и стремящимся узнать о более сложных возможностях и особенностях системы. Таких читателей заинтересуют главы, посвященные программированию процессов и потоков, а также межзадачному программированию и взаимодействию с аппаратными устройствами. Мы поможем им сделать свои программы быстрее, надежнее и безопаснее.
? Возможно, наш читатель является разработчиком, имеющим опыт программирования для другой UNIX-системы и желающим создавать программы для GNU/Linux. Такой читатель уже знаком со стандартными API-функциями, и ему нужно узнать об особенностях системы, ее ограничениях, дополнительных возможностях и специфических соглашениях.
? Возможно, наш читатель является разработчиком, пришедшим в среду UNIX из другой платформы, например Win32. Такой читатель знаком с общими принципами разработки программного обеспечения, но ему нужно узнать о специфических методиках, применяемых в Linux-программах для взаимодействия с операционной системой и другими программами- Ему нужно научиться писать программы, которые ведут себя так, как того ожидают пользователи Linux.
Эта книга не является исчерпывающим руководством или справочником по программированию в GNU/Linux Мы применяем обучающий подход, последовательно излагал самые важные концепции и методики и приводя примеры их использования. В разделе 1.5, "Поиск дополнительной информации", указано, где можно найти дополнительную информацию по данной теме.
Поскольку в книге рассматриваются довольно сложные вопросы, мы предполагаем, что читатели знакомы с языком программирования С и знают, как использовать функции стандартной библиотеки языка С. Этот язык является основным средством разработки программного обеспечения для GNU/Linux Большинство команд и функций, описанных в книге. а также большая часть ядра Linux написаны на С.
Изложенная в книге информация и равной степени применима к программам написанным на C++, так как этот язык является надмножеством языка С Библиотечные функции языка С являются основным "средством общения" в среде GNU/Linux.
Те, кто уже программировали в UNIX, возможно, сталкивались с низкоуровневыми функциями ввода-вывода (open(), read(), stat() и т.д.). Они отличаются от стандартных библиотечных функций языка С (fopen(), fprintf(), fscanf() и др.). Оба семейства функций находят применение в GNU/Linux, поэтому мы не будем делать акцент на каком-то одном семействе. Низкоуровневые функции описаны в приложении Б, "Низкоуровневый ввод-вывод".
В книге отсутствует вводная информация об операционной системе Linux. Мы предполагаем, что читатели имеют общее представление о том, как взаимодействовать с системой и выполнять базовые операции в графической среде и в режиме командной строки.
Соглашения, принятые в книге
В книге используются следующие типографские соглашения.
? Новые термины выделяются курсивом.
? Тексты программ, названия функций, переменных и других элементов "компьютерного языка" выделены моноширинным шрифтом, например printf("Hello, world! ").
? Имена команд, файлов и каталогов также даны моноширинным шрифтом, например cd /.
? Когда мы показываем взаимодействие пользователя с интерпретатором команд, то ставим в начале строки приглашения символ % (в реальной системе вместо него может стоять другое выражение). Все, что находится далее в этой строке, вводится пользователем. Остальные строки — это реакция системы. Например, в диалоге
% uname
Linux
система выдала приглашение %, пользователь ввел команду uname, а система ответила выдачей строки Linux.
? В заголовках к примерам программ указывается имя исходного файла (в скобках). Все листинги можно загрузить по адресу http://www.advancedlinuxprogramming.com.
Мы писали программы в Red Hat Linux версии 6.2. В этот дистрибутив входит ядро Linux версии 2.2.14, GNU-бнблиотека языка С версии 2.1.3 и семейство компиляторов EGCS версии 1.1.2. Приведенные программы в общем случае должны работать и в других версиях Linux, в частности в ядре версии 2.4 и с GNU-библиотекой языка С версии 2.2.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Введение
Введение Области применения трехмерного компьютерного моделирования необычайно широки. Кого-то интересует создание персонажей, кто-то мечтает построить виртуальный город, кто-то работает в игровой индустрии, а кто-то занимается наружной рекламой. Трехмерное
10.0. Введение
10.0. Введение Потоки (streams) являются одной из самых мощных (и сложных) компонент стандартной библиотеки С++. Их применение при простом, неформатированном вводе-выводе в целом не представляет трудностей, однако ситуация усложняется, если необходимо изменить формат с помощью
11.0. Введение
11.0. Введение Язык программирования C++ хорошо подходит для решения научных и математических задач из-за своей гибкости, выразительности и эффективности. Одно из самых больших преимуществ применения C++ для выполнения численных расчетов связано с тем, что он помогает
12.0. Введение
12.0. Введение В данной главе даются рецепты написания многопоточных программ на C++ с использованием библиотеки Boost Threads, автором которой является Вильям Кемпф (William Kempf). Boost — это набор переносимых, высокопроизводительных библиотек с открытым исходным кодом, неоднократно
13.0. Введение
13.0. Введение В данной главе приводятся решения некоторых задач, которые обычно возникают при интернационализации программ С++. Обеспечение возможности работы программы в различных регионах (это обычно называется локализацией), как правило, требует решения двух задач:
14.0. Введение
14.0. Введение Язык XML играет важную роль во многих областях, в том числе при хранении и поиске информации, в издательском деле и при передаче данных по сетям; в данной главе мы научимся работать с XML в С++. Поскольку эта книга больше посвящена С++, чем XML, я полагаю, вы уже имеете
15.0. Введение
15.0. Введение В этой главе рассматриваются некоторые аспекты C++, которые плохо вписываются в тематику любой другой главы: указатели функций и членов, константные переменные и функции- члены, независимые операторы (т.е. не члены класса) и несколько других
Введение
Введение По своей популярности пакет офисных приложений Microsoft Office может сравниться, пожалуй, лишь с операционной системой Windows. Его активно используют школьники и студенты, бухгалтеры и топ-менеджеры, ИТ-специалисты и писатели, руководители и офисные сотрудники. Сегодня
Введение
Введение В своей первой книге, "Delphi. Только практика", автор рассматривал примеры различных интересных программ. Эта книга является продолжением первой книги. Продолжением, поскольку исходные коды программ, которые рассматриваются в первой и второй книге, не повторяются.
Введение
Введение MySQL – это система управления базами данных (СУБД) с открытым кодом. Это высокопроизводительная и масштабируемая СУБД с множеством программных интерфейсов. Она обладает огромными функциональными возможностями и подходит для решения самых разных задач.Данная
Введение
Введение Я помню время, много лет тому назад, когда я предложил издательству Apress книгу, посвященную еще не выпущенному на тот момент пакету инструментальных средств разработки под названием Next Generation Windows Services (NGWS - сервисы Windows следующего поколения). Вы, наверное, знаете,
Введение
Введение Трудно представить себе компьютер, на котором не установлен Microsoft Office. Этот пакет включает программы, с помощью которых решаются многие повседневные задачи студентов, бухгалтеров, инженеров, менеджеров. Можно было бы перечислить еще огромное количество
Введение
Введение Вы уже знакомы с STL. Вы умеете создавать контейнеры, перебирать их содержимое, добавлять и удалять элементы, а также использовать общие алгоритмы — такие, как find и sort. Но вы никак не можете отделаться от впечатления, что используете лишь малую часть возможностей
Введение
Введение Это не совсем книга. Просто по ходу работы и изучения пакета у меня накопилось немало заметок, которые я в конце концов собрал воедино и опубликовал с оглавлением и под единым названием.Данные заметки относятся к версиям 4 и 5 пакета MySQL. По ходу текста особо
Введение
Введение Правильно организованное делопроизводство – залог удачного бизнеса, поэтому эффективности этой составляющей всегда уделялось большое внимание. С появлением компьютерных технологий в делопроизводстве произошла настоящая революция. Работать с документами
Введение
Введение Если вы никогда раньше не работали в Photoshop, но мечтаете научиться его использовать, считайте, что вам повезло – первый шаг к этому вы уже сделали, купив данную книгу. Если же вы все-таки боитесь того, что вам никогда не разобраться со всеми этими кнопками, панелями