На главную страницу
Форум txt.version   



Статья :: Разработка приложений в среде Linux. Второе издание Linux Application Development. Second Edition : Майкл Джонсон

Книга известных профессионалов в области разработки коммерческих приложений в Linux представляет собой отличный справочник для широкого круга программистов в Linux, а также тех разработчиков на языке С, которые перешли в среду Linux из других операционных систем. Подробно рассматриваются концепции, лежащие в основе процесса создания системных приложений, а также разнообразные доступные инструменты и библиотеки. Среди рассматриваемых в книге вопросов можно выделить анализ особенностей применения лицензий GNU, использование свободно распространяемых компиляторов и библиотек, системное программирование для Linux, а также написание и отладка собственных переносимых библиотек. Изобилие хорошо документированных примеров кода помогает лучше усвоить особенности программирования в Linux.

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

Лорен и Яну — за то, что давали мне возможность иногда отвлекаться от работы. Эрик

Введение

Данная книга предназначена для опытных (или не столь опытных, но желающих обучаться) программистов, которые намереваются разрабатывать программное обеспечение для 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.

Следующие книги, несмотря на то, что некоторые темы в них совпадают, в основном дополняют данную книгу, будучи проще, сложнее, либо рассматривая сходные темы.

• The С Programming Language, second edition (Язык программирования С (Си), Брайан У. Керниган, Деннис М. Ритчи, ИД "Вильямс", 2005 год) [15]. Кратко обучает стандартному программированию на ANSI С с небольшой ссылкой на операционную систему. Она предназначена для читателей, имеющих навыки программирования.

• Practical С Programming [27]. Обучает программированию и стилю С шаг за шагом. Это пособие для начинающих, предназначенное для тех, кто не имеет никакого опыта программирования.

• Programming with GNU Software [19]. Представляет собой введение в среду программирования GNU, включающее главы, посвященные запуску компилятора С, отладчика, утилиты make и системы управления исходным кодом RCS.

• Advanced Programming in the UNIX Environment [35]. Охватывает наиболее важные системы Unix и системы, подобные Unix, однако предшествует появлению Linux. В книге рассматривается материал, аналогичный представленному в двух заключительных глав настоящей книги: системные вызовы и библиотеки совместного использования. Кроме того, в ней предложено множество примеров и объясняются различия между версиями Unix.

• UNIX Network Programming [33]. Подробно рассматривает сетевое программирование, включая традиционные виды организации сетей, недоступных в Linux. Во время чтения этой книги особое внимание следует уделять интерфейсу сокетов Беркли (см. главу 17), который обеспечивает максимальную переносимость. Эта книга пригодится, если возникнет потребность в модификации кода для переноса сетевой программы Linux в среду какой-нибудь новой разновидности Unix.

• A Practical Guide to Red Hat Linux 8 [32]. Книга почти на 1500 страниц, содержащая информацию о применении Linux, программировании оболочки и системном администрировании. Несмотря на то что в названии книги упоминается Red Hat Linux 8, большинство содержащейся в ней информации относится ко всем разновидностям Linux. Она также содержит краткую ссылку на многие утилиты, содержащиеся в системе Linux.

• Linux in a Nutshell [31]. Предоставляет краткую информацию об утилитах.

• Linux Device Drivers, second edition [28]. Обучает написанию драйверов устройств Linux как тех, кто знаком с кодом операционной системы, так и тех, кто с ним не знаком.

Полный список рекомендуемой литературы можно найти в конце книги.

Все исходные коды данной книги являются производными от тщательно протестированных рабочих примеров. Исходные коды доступны на сайте http://ladweb.net, а также на сайте издательства. Для ясности в некоторых коротких фрагментах кода оставлены проверки лишь наиболее типичных ошибок, а не всех возможных. Тем не менее, в загружаемых кодах вы найдете проверки всех существенных ошибок.

В книге рассматриваются функции, которые должны использоваться, а также их совместимость. Мы также рекомендуем пользоваться справочной документацией, большая часть которой должна присутствовать в вашей системе. В главе 3 описаны способы поиска онлайновой информации о вашей системе Linux.

Операционная система Linux стремительно развивается, и ко времени прочтения книги некоторые факты могут измениться. Данная книга была написана с учетом ядра Linux 2.6 и библиотеки GNU С версии 2.3.

Второе издание

Ниже перечислены добавления и модификации, появившиеся во втором издании книги.

• Вся книга была обновлена с учетом новой спецификации Unix версии 6 — обновленной версии стандарта POSIX.

• Небольшие фрагменты исходного кода примеров приводятся с номерами строк, облегчая ориентирование в соответствии с полным исходным кодом.

• Глава 1 содержит обновленную и расширенную историю разработки Linux.

• В главе 4 рассматриваются утилиты strace и ltrace.

• В главе 6 рассматривается библиотека GNU С (glibc) и стандарты, на которых она основана. Также в этой главе объясняется, как и почему следует использовать макросы проверки свойств. Кроме того, описываются основные системные вызовы, рассматриваемые во всех разделах книги; способы обнаружения возможностей системы во время выполнения; разнообразные интерфейсы, предоставляемые glibc; подход glibc к обратной совместимости.

• Глава 7 содержит значительно расширенную информацию об инструментах отладки памяти, включая новые свойства отладки памяти библиотеки GNU С, новую версию mpr и новый инструмент Valgrind.

• В главе 12 рассматриваются сигналы реального времени и контексты сигналов.

• В главе 13 документируются системные вызовы poll() и epoll, предоставляющие рекомендуемые альтернативы select().

• В главе 16 рассматривается и рекомендуется новый механизм распределения псевдотерминалов (Pseudo TTY). Также внимание уделяется системным базам данных utmp и wtmp.

• В главе 17 рассматривается как IPv6, так и IPv4, включая новые интерфейсы системных библиотек для написания программ, которые могут равнозначно использовать IPv6 и IPv4. Также рассматриваются более ранние интерфейсы, которым уделялось внимание в первом издании, чтобы дать возможность поддерживать код, использующий эти интерфейсы, и переносить его в более новые интерфейсы. Кроме того, обсуждается более широкий набор функций, чем нужен для многих сетевых серверов, например, неблокирующая accept().

• Глава 22 — это новая глава, в которой рассматриваются основные требования к написанию защищенных программ и объясняется, почему вопросы безопасности относятся ко всем программам, а не только к системным демонам и утилитам.

• Глава 23 содержит более полное обсуждение использования регулярных выражений, включая простую версию утилиты grep в качестве примера.

• В главе 26 рассматриваются новейшие улучшения библиотеки popt и усовершенствованный код примера.

• К главе 28 добавлена реализация Linux-PAM.

• В главе 25 документируется библиотека qdbm, а не Berkeley db, поскольку лицензия qdbm является менее ограничивающей.

• Почти каждая глава содержит важные обновления.

Описанные ниже материалы из книги были изъяты.

• Поиск информации о Linux в списках рассылки, группах новостей и на Web-сайтах; эта информация меняется слишком быстро, чтобы стать частью книги, которая будет полезна в течение многих лет.

• Информация об управлении портами ввода-вывода; это обычно использовать не рекомендуется, поскольку оно конфликтует со структурой управления устройствами и режимом электропитания Linux.

• Точные копии общедоступной лицензии GNU и библиотеки GNU. Несмотря на свою важность, перепечатка этих лицензий не улучшает знание их содержания. Также со времени публикации первого издания увеличилась важность ряда других лицензий.

• Инструмент отладки памяти Checker больше не поддерживается, поэтому во втором издании не рассматривается.

Благодарности

Мы благодарим наших технических рецензентов за потраченное время и тщательность. Их предложения помогли улучшить эту книгу. Особую благодарность выражаем Линусу Торвальдсу (Linus Torvalds), Алану Коксу (Alan Сох), Теду Тсо (Ted Ts'o) и Арьену ван де Вену (Arjan van de Ven), которые нашли время, чтобы ответить на наши вопросы.

Поддержав нас в написании первого издания, наши жены — Ким Джонсон (Kim Johnson) и Бригид Троан (Brigid Troan) были так терпеливы и великодушны, что побудили нас написать второе издание. Без их помощи и поддержки не удалось бы написать эту книгу, не говоря уже о ее переиздании.

От издательства

Вы, читатель этой книги, и есть главный ее критик. Мы ценим ваше мнение и хотим знать, что было сделано нами правильно, что можно было сделать лучше и что еще вы хотели бы увидеть изданным нами. Нам интересны любые ваши замечания в наш адрес.

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

Отправляя письмо или сообщение, не забудьте указать название книги и ее авторов, а также свой обратный адрес. Мы внимательно ознакомимся с вашим мнением и обязательно учтем его при отборе и подготовке к изданию новых книг.

Наши электронные адреса:

E-mail: info@williamspublishing.com

WWW: http://www.williamspublishing.com

Наши почтовые адреса:

в России: 115419, Москва, а/я 783

в Украине: 03150, Киев, а/я 152




Разработка приложений в среде Linux. Второе издание Linux Application Development. Second Edition : Майкл Джонсон

страницы в данном разделе 
Разработка приложений в среде Linux. Второе издание Linux Application Development. Second Edition : Майкл Джонсон Часть I Начало работы : Майкл Джонсон
1.1. Краткая история свободного программного обеспечения Unix : Майкл Джонсон 1.2. Разработка Linux : Майкл Джонсон
1.3. Важные факты в создании систем Unix : Майкл Джонсон Глава 2 Лицензии и авторские права : Майкл Джонсон
2.1. Авторское право : Майкл Джонсон 2.2. Лицензирование : Майкл Джонсон
2.3. Лицензии на свободное ПО : Майкл Джонсон 2.3.6. Несовместимости лицензий : Майкл Джонсон
Глава 3 Онлайновая системная документация : Майкл Джонсон 3.1. Оперативные страницы руководства : Майкл Джонсон
1.1. Краткая история свободного программного обеспечения Unix : Майкл Джонсон 1.2. Разработка Linux : Майкл Джонсон
1.3. Важные факты в создании систем Unix : Майкл Джонсон 1.1. Краткая история свободного программного обеспечения Unix : Майкл Джонсон
1.2. Разработка Linux : Майкл Джонсон 1.3. Важные факты в создании систем Unix : Майкл Джонсон
2.1. Авторское право : Майкл Джонсон 2.2. Лицензирование : Майкл Джонсон
2.3. Лицензии на свободное ПО : Майкл Джонсон 2.3.6. Несовместимости лицензий : Майкл Джонсон
2.1. Авторское право : Майкл Джонсон 2.2. Лицензирование : Майкл Джонсон
2.3.6. Несовместимости лицензий : Майкл Джонсон 2.3.6. Несовместимости лицензий : Майкл Джонсон
3.1. Оперативные страницы руководства : Майкл Джонсон 3.1. Оперативные страницы руководства : Майкл Джонсон
Часть II Инструментальные средства и среда разработки : Майкл Джонсон продолжение 29 : Майкл Джонсон
4.1. Редакторы : Майкл Джонсон продолжение 31 : Майкл Джонсон
4.1.1. Emacs : Майкл Джонсон 4.2. make : Майкл Джонсон
продолжение 34 : Майкл Джонсон 4.2.1 Сложные командные строки : Майкл Джонсон
4.2.2. Переменные : Майкл Джонсон 4.2.3. Суффиксные правила : Майкл Джонсон
4.3. Отладчик GNU : Майкл Джонсон 4.4. Действия при трассировке программы : Майкл Джонсон
Глава 5 Опции и расширения gcc : Майкл Джонсон 5.1. Опции gcc : Майкл Джонсон
5.2. Заголовочные файлы : Майкл Джонсон Глава 6 Библиотека GNU C : Майкл Джонсон
6.1. Выбор возможностей glibc : Майкл Джонсон 6.2. Интерфейсы POSIX : Майкл Джонсон
6.2.1. Обязательные типы POSIX : Майкл Джонсон 6.2.2. Раскрытие возможностей времени выполнения : Майкл Джонсон
6.2.3. Поиск и настройка базовой системной информации : Майкл Джонсон 6.3. Совместимость : Майкл Джонсон
Глава 7 Средства отладки использования памяти : Майкл Джонсон 7.1. Код, содержащий ошибки : Майкл Джонсон
7.2. Средства проверки памяти, входящие в состав glibc : Майкл Джонсон 7.2.1. Поиск повреждений кучи : Майкл Джонсон
7.2.2. Использование mtrace() для отслеживания распределений памяти : Майкл Джонсон 7.3. Поиск утечек памяти с помощью mpr : Майкл Джонсон
7.4. Обнаружение ошибок памяти с помощью Valgrind : Майкл Джонсон 7.5. Electric Fence : Майкл Джонсон
7.5.2. Выравнивание памяти : Майкл Джонсон Глава 8 Создание и использование библиотек : Майкл Джонсон
8.2. Совместно используемые библиотеки : Майкл Джонсон 8.3. Разработка совместно используемых библиотек : Майкл Джонсон
8.3.1. Управление совместимостью : Майкл Джонсон 8.4. Сборка совместно используемых библиотек : Майкл Джонсон
8.5. Инсталляция совместно используемых библиотек : Майкл Джонсон продолжение 65 : Майкл Джонсон
8.5.1. Пример : Майкл Джонсон 8.6. Работа с совместно используемыми библиотеками : Майкл Джонсон
Глава 9 Системное окружение Linux : Майкл Джонсон 9.1. Окружение процесса : Майкл Джонсон
9.2. Системные вызовы : Майкл Джонсон продолжение 71 : Майкл Джонсон
9.2.2. Коды возврата системных вызов : Майкл Джонсон 9.2.3. Использование системных вызовов : Майкл Джонсон
9.2.4. Общие коды возврата ошибок : Майкл Джонсон Глава 4 Инструментальные средства разработки : Майкл Джонсон
4.1. Редакторы : Майкл Джонсон продолжение 77 : Майкл Джонсон
4.1.1. Emacs : Майкл Джонсон 4.2. make : Майкл Джонсон
продолжение 80 : Майкл Джонсон 4.2.1 Сложные командные строки : Майкл Джонсон
4.2.2. Переменные : Майкл Джонсон 4.2.3. Суффиксные правила : Майкл Джонсон
4.3. Отладчик GNU : Майкл Джонсон 4.4. Действия при трассировке программы : Майкл Джонсон
продолжение 86 4.1. Редакторы : Майкл Джонсон
4.1.1. Emacs : Майкл Джонсон продолжение 89
4.1.1. Emacs : Майкл Джонсон 4.2. make : Майкл Джонсон
4.2.1 Сложные командные строки : Майкл Джонсон 4.2.2. Переменные : Майкл Джонсон
4.2.3. Суффиксные правила : Майкл Джонсон продолжение 95
4.2.1 Сложные командные строки : Майкл Джонсон 4.2.2. Переменные : Майкл Джонсон
4.2.3. Суффиксные правила : Майкл Джонсон 4.3. Отладчик GNU : Майкл Джонсон
4.4. Действия при трассировке программы : Майкл Джонсон 5.1. Опции gcc : Майкл Джонсон
5.2. Заголовочные файлы : Майкл Джонсон 5.1. Опции gcc : Майкл Джонсон
6.1. Выбор возможностей glibc : Майкл Джонсон 6.2. Интерфейсы POSIX : Майкл Джонсон
6.2.1. Обязательные типы POSIX : Майкл Джонсон 6.2.2. Раскрытие возможностей времени выполнения : Майкл Джонсон
6.2.3. Поиск и настройка базовой системной информации : Майкл Джонсон 6.3. Совместимость : Майкл Джонсон
6.1. Выбор возможностей glibc : Майкл Джонсон 6.2. Интерфейсы POSIX : Майкл Джонсон
6.2.2. Раскрытие возможностей времени выполнения : Майкл Джонсон 6.2.3. Поиск и настройка базовой системной информации : Майкл Джонсон
6.2.1. Обязательные типы POSIX : Майкл Джонсон 6.2.2. Раскрытие возможностей времени выполнения : Майкл Джонсон
6.2.3. Поиск и настройка базовой системной информации : Майкл Джонсон 6.3. Совместимость : Майкл Джонсон
7.1. Код, содержащий ошибки : Майкл Джонсон 7.2. Средства проверки памяти, входящие в состав glibc : Майкл Джонсон
7.2.1. Поиск повреждений кучи : Майкл Джонсон 7.2.2. Использование mtrace() для отслеживания распределений памяти : Майкл Джонсон
7.3. Поиск утечек памяти с помощью mpr : Майкл Джонсон 7.4. Обнаружение ошибок памяти с помощью Valgrind : Майкл Джонсон
7.5. Electric Fence : Майкл Джонсон 7.5.2. Выравнивание памяти : Майкл Джонсон
7.1. Код, содержащий ошибки : Майкл Джонсон 7.2.1. Поиск повреждений кучи : Майкл Джонсон
7.2.2. Использование mtrace() для отслеживания распределений памяти : Майкл Джонсон 7.2.1. Поиск повреждений кучи : Майкл Джонсон
7.2.2. Использование mtrace() для отслеживания распределений памяти : Майкл Джонсон 7.3. Поиск утечек памяти с помощью mpr : Майкл Джонсон
7.4. Обнаружение ошибок памяти с помощью Valgrind : Майкл Джонсон 7.5.2. Выравнивание памяти : Майкл Джонсон
7.5.1. Использование Electric Fence : Майкл Джонсон 7.5.2. Выравнивание памяти : Майкл Джонсон
8.2. Совместно используемые библиотеки : Майкл Джонсон 8.3. Разработка совместно используемых библиотек : Майкл Джонсон
8.3.1. Управление совместимостью : Майкл Джонсон 8.4. Сборка совместно используемых библиотек : Майкл Джонсон
8.5. Инсталляция совместно используемых библиотек : Майкл Джонсон продолжение 141 : Майкл Джонсон
8.5.1. Пример : Майкл Джонсон 8.6. Работа с совместно используемыми библиотеками : Майкл Джонсон
8.2. Совместно используемые библиотеки : Майкл Джонсон 8.3.1. Управление совместимостью : Майкл Джонсон
8.3.1. Управление совместимостью : Майкл Джонсон 8.4. Сборка совместно используемых библиотек : Майкл Джонсон
8.5. Инсталляция совместно используемых библиотек : Майкл Джонсон 8.5.1. Пример : Майкл Джонсон
продолжение 150 8.5.1. Пример : Майкл Джонсон
9.1. Окружение процесса : Майкл Джонсон 9.2. Системные вызовы : Майкл Джонсон
продолжение 154 : Майкл Джонсон 9.2.2. Коды возврата системных вызов : Майкл Джонсон
9.2.3. Использование системных вызовов : Майкл Джонсон 9.2.4. Общие коды возврата ошибок : Майкл Джонсон
9.1. Окружение процесса : Майкл Джонсон 9.2. Системные вызовы : Майкл Джонсон
9.2.2. Коды возврата системных вызов : Майкл Джонсон 9.2.3. Использование системных вызовов : Майкл Джонсон
9.2.4. Общие коды возврата ошибок : Майкл Джонсон продолжение 163
9.2.2. Коды возврата системных вызов : Майкл Джонсон 9.2.3. Использование системных вызовов : Майкл Джонсон
9.2.4. Общие коды возврата ошибок : Майкл Джонсон Часть III Системное программирование : Майкл Джонсон
10.1. Определение процесса : Майкл Джонсон 10.2 Атрибуты процессов : Майкл Джонсон
10.2.1. Идентификатор процесса и происхождение : Майкл Джонсон 10.2.2. Сертификаты : Майкл Джонсон
10.2.4. Резюме по идентификаторам пользователей и групп : Майкл Джонсон 10.3. Информация о процессе : Майкл Джонсон
10.3.1. Аргументы программы : Майкл Джонсон 10.3.2 Использование ресурсов : Майкл Джонсон
10.3.3. Применение ограничений использования ресурсов : Майкл Джонсон 10.4. Примитивы процессов : Майкл Джонсон
10.4.2. Наблюдение за уничтожением дочерних процессов : Майкл Джонсон 10.4.3. Запуск новых программ : Майкл Джонсон
10.4.6. Уничтожение других процессов : Майкл Джонсон 10.5. Простые дочерние процессы : Майкл Джонсон
10.5.2. Чтение и запись из процесса : Майкл Джонсон 10.6. Сеансы и группы процессов : Майкл Джонсон
10.6.3. Группы процессов : Майкл Джонсон 10.6.4. Висячие группы процессов : Майкл Джонсон
10.7. Введение в ladsh : Майкл Джонсон 10.7.1. Запуск внешних программ с помощью ladsh : Майкл Джонсон
10.8. Создание клонов : Майкл Джонсон Глава 11 Простое управление файлами : Майкл Джонсон
продолжение 190 : Майкл Джонсон 11.1. Режим файла : Майкл Джонсон
11.1.1. Права доступа к файлу : Майкл Джонсон 11.1.2. Модификаторы прав доступа к файлам : Майкл Джонсон
11.1.3. Типы файлов : Майкл Джонсон 11.1.4. Маска umask процесса : Майкл Джонсон
11.2. Основные файловые операции : Майкл Джонсон 11.2.1. Файловые дескрипторы : Майкл Джонсон
11.2.3. Открытие файлов в файловой системе : Майкл Джонсон 11.2.4. Чтение, запись и перемещение : Майкл Джонсон
11.2.5. Частичное чтение и запись : Майкл Джонсон 11.2.7. Синхронизация файлов : Майкл Джонсон
11.3. Запрос и изменение информации inode : Майкл Джонсон 11.3.1. Поиск информации inode : Майкл Джонсон
11.3.2. Простой пример stat() : Майкл Джонсон 11.3.7. Расширенные атрибуты Ext3 : Майкл Джонсон
11.4. Манипулирование содержимым каталогов : Майкл Джонсон 11.4.1. Создание входных точек устройств и именованных каналов : Майкл Джонсон
11.4.3. Использование символических ссылок : Майкл Джонсон 11.5. Манипуляции файловыми дескрипторами : Майкл Джонсон
11.5.3. Дублирование файловых дескрипторов : Майкл Джонсон 11.7. Добавление перенаправления для ladsh : Майкл Джонсон
11.7.1. Структуры данных : Майкл Джонсон 11.7.2. Изменения в коде : Майкл Джонсон
Глава 12 Обработка сигналов : Майкл Джонсон продолжение 215 : Майкл Джонсон
12.1. Концепция сигналов : Майкл Джонсон 12.1.2. Простые сигналы : Майкл Джонсон
12.1.3. Надежные сигналы : Майкл Джонсон 12.1.4. Сигналы и системные вызовы : Майкл Джонсон
12.2. Программный интерфейс сигналов Linux и POSIX : Майкл Джонсон 12.2.3. Перехват сигналов : Майкл Джонсон
12.2.4. Манипулирование маской сигналов процесса : Майкл Джонсон 12.3. Доступные сигналы : Майкл Джонсон
продолжение 224 : Майкл Джонсон 12.4. Написание обработчиков сигналов : Майкл Джонсон
12.5. Повторное открытие журнальных файлов : Майкл Джонсон 12.6. Сигналы реального времени : Майкл Джонсон
12.6.1. Очередность и порядок сигналов : Майкл Джонсон 12.7. Дополнительные сведения о сигналах : Майкл Джонсон
12.7.1. Получение контекста сигнала : Майкл Джонсон 12.7.2. Отправка данных с сигналом : Майкл Джонсон
Глава 13 Расширенная обработка файлов : Майкл Джонсон 13.1. Мультиплексирование входных и выходных данных : Майкл Джонсон
продолжение 234 : Майкл Джонсон 13.1.1. Неблокируемый ввод-вывод : Майкл Джонсон
13.1.2. Мультиплексирование с помощью poll() : Майкл Джонсон 13.1.3. Мультиплексирование с помощью select() : Майкл Джонсон
13.1.4. Сравнение poll() и select() : Майкл Джонсон 13.1.5. Мультиплексирование с помощью epoll : Майкл Джонсон
13.1.6 Сравнение poll() и epoll : Майкл Джонсон 13.2. Отображение в памяти : Майкл Джонсон
13.2.2. Установка отображения в памяти : Майкл Джонсон 13.2.4. Синхронизация областей памяти на диск : Майкл Джонсон
13.2.5. Блокировка областей памяти : Майкл Джонсон 13.3. Блокирование файлов : Майкл Джонсон
13.3.1. Блокировочные файлы : Майкл Джонсон 13.3.2. Блокировка записей : Майкл Джонсон
13.3.4. Аренда файла : Майкл Джонсон 13.4. Альтернативы read() и write() : Майкл Джонсон
13.4.1. Разбросанное/сборное чтение и запись : Майкл Джонсон 13.4.2. Игнорирование указателя файла : Майкл Джонсон
Глава 14 Операции с каталогами : Майкл Джонсон 14.1. Текущий рабочий каталог : Майкл Джонсон
14.1.1. Поиск текущего рабочего каталога : Майкл Джонсон 14.4. Чтение содержимого каталога : Майкл Джонсон
продолжение 256 : Майкл Джонсон 14.5. Универсализация файловых имен : Майкл Джонсон
14.5.2. Внутренняя универсализация : Майкл Джонсон 14.6. Добавление к ladsh возможностей работы с каталогами и универсализацией : Майкл Джонсон
14.6.2. Добавление универсализации файловых имен : Майкл Джонсон 14.7. Обход деревьев файловых систем : Майкл Джонсон
14.7.1. Использование ftw() : Майкл Джонсон 14.7.2. Обход дерева файлов с помощью nft() : Майкл Джонсон
14.7.3. Реализация find : Майкл Джонсон 14.8. Уведомление о смене каталога : Майкл Джонсон
Глава 15 Управление заданиями : Майкл Джонсон 15.1. Основы управления заданиями : Майкл Джонсон
15.1.3. Обработка сигналов управления заданиями : Майкл Джонсон 15.2. Управление заданиями в ladsh : Майкл Джонсон
Глава 16 Терминалы и псевдотерминалы : Майкл Джонсон продолжение 271 : Майкл Джонсон
16.1. Операции tty : Майкл Джонсон 16.1.2. Управляющие терминалы : Майкл Джонсон
16.1.4. Запись с помощью utempter : Майкл Джонсон 16.1.5. Запись вручную : Майкл Джонсон
16.2. Обзор termios : Майкл Джонсон 16.3. Примеры использования termios : Майкл Джонсон
16.3.1. Пароли : Майкл Джонсон 16.3.2. Последовательные коммуникации : Майкл Джонсон
16.4. Отладка termios : Майкл Джонсон 16.5. Справочник по termios : Майкл Джонсон
16.5.1. Функции : Майкл Джонсон 16.5.4. Флаги режима ввода : Майкл Джонсон
16.5.5. Флаги режима вывода : Майкл Джонсон 16.5.6. Управляющие флаги : Майкл Джонсон
16.5.7. Управляющие символы : Майкл Джонсон 16.5.8. Локальные флаги : Майкл Джонсон
16.5.9. Управление read() : Майкл Джонсон 16.6. Псевдотерминалы : Майкл Джонсон
16.6.1. Открытие псевдотерминалов : Майкл Джонсон 16.6.2. Простые способы открытия псевдотерминалов : Майкл Джонсон
16.6.3. Сложные способы открытия псевдотерминалов : Майкл Джонсон 16.6.4. Примеры псевдотерминалов : Майкл Джонсон
Глава 17 Работа в сети с помощью сокетов : Майкл Джонсон 17.1. Поддержка протоколов : Майкл Джонсон
17.1.3. Как заставить реальность играть по точным правилам? : Майкл Джонсон 17.1.4. Адреса : Майкл Джонсон
17.3. Основные действия с сокетами : Майкл Джонсон 17.3.1. Создание сокета : Майкл Джонсон
17.3.4. Ожидание соединений : Майкл Джонсон 17.4. Сокеты домена Unix : Майкл Джонсон
17.4.2. Ожидание соединения : Майкл Джонсон 17.4.6. Передача файловых дескрипторов : Майкл Джонсон
17.5. Сетевая обработка с помощью TCP/IP : Майкл Джонсон 17.5.1. Упорядочение байтов : Майкл Джонсон
17.5.2. Адресация IPv4 : Майкл Джонсон 17.5.3. Адресация IPv6 : Майкл Джонсон
17.5.4. Манипулирование IP-адресами : Майкл Джонсон 17.5.5. Преобразование имен в адреса : Майкл Джонсон
17.5.6. Преобразование адресов в имена : Майкл Джонсон 17.5.7. Ожидание TCP-соединений : Майкл Джонсон
17.5.8. Клиентские приложения TCP : Майкл Джонсон 17.6. Использование дейтаграмм UDP : Майкл Джонсон
продолжение 314 : Майкл Джонсон 17.6.1. Создание UDP-сокета : Майкл Джонсон
17.6.2. Отправка и получение дейтаграмм : Майкл Джонсон 17.6.3. Простой tftp-сервер : Майкл Джонсон
17.7. Ошибки сокетов : Майкл Джонсон 17.8. Унаследованные сетевые функции : Майкл Джонсон
17.8.1. Манипулирование IPv4-адресами : Майкл Джонсон 17.8.2. Преобразование имен хостов : Майкл Джонсон
17.8.3. Пример поиска информации хоста с использованием унаследованных функций : Майкл Джонсон 17.8.4. Поиск номеров портов : Майкл Джонсон
Глава 18 Время : Майкл Джонсон 18.1. Вывод времени и даты : Майкл Джонсон
18.1.1. Представление времени : Майкл Джонсон 18.1.2. Преобразование, форматирование и разбор значений времени : Майкл Джонсон
18.1.3. Ограничения, связанные со временем : Майкл Джонсон 18.2. Использование таймеров : Майкл Джонсон
18.2.1. Режим ожидания : Майкл Джонсон 18.2.2. Интервальные таймеры : Майкл Джонсон
Глава 19 Случайные числа : Майкл Джонсон 19.1. Псевдослучайные числа : Майкл Джонсон
19.2. Криптография и случайные числа : Майкл Джонсон Глава 20 Программирование виртуальных консолей : Майкл Джонсон
продолжение 336 : Майкл Джонсон 20.1. Начало работы : Майкл Джонсон
20.5. Управление переключением виртуальных консолей : Майкл Джонсон 20.6. Пример команды open : Майкл Джонсон
Глава 21 Консоль Linux : Майкл Джонсон продолжение 341 : Майкл Джонсон
21.1. Базы данных возможностей : Майкл Джонсон 21.3. Возможности консоли Linux : Майкл Джонсон
продолжение 344 : Майкл Джонсон 21.3.1. Управляющие символы : Майкл Джонсон
21.3.2. Управляющие последовательности : Майкл Джонсон 21.3.4. Составные управляющие последовательности : Майкл Джонсон
21.4. Прямой вывод на экран : Майкл Джонсон Глава 22 Написание защищенных программ : Майкл Джонсон
22.1. Когда безопасность имеет значение? : Майкл Джонсон продолжение 351 : Майкл Джонсон
22.1.1. Когда выходит из строя система безопасности? : Майкл Джонсон 22.2. Минимизация возможности появления атак : Майкл Джонсон
22.2.1. Передача полномочий : Майкл Джонсон 22.2.2. Получение вспомогательной программы : Майкл Джонсон
22.3. Общие бреши системы безопасности : Майкл Джонсон 22.3.1. Переполнение буфера : Майкл Джонсон
22.3.3. Переменные окружения : Майкл Джонсон 22.3.5. Создание временных файлов : Майкл Джонсон
22.3.6. Режимы состязаний и обработчики сигналов : Майкл Джонсон 22.4. Запуск в качестве демона : Майкл Джонсон
10.1. Определение процесса : Майкл Джонсон 10.2 Атрибуты процессов : Майкл Джонсон
10.2.1. Идентификатор процесса и происхождение : Майкл Джонсон 10.2.2. Сертификаты : Майкл Джонсон
10.2.4. Резюме по идентификаторам пользователей и групп : Майкл Джонсон 10.3. Информация о процессе : Майкл Джонсон
10.3.1. Аргументы программы : Майкл Джонсон 10.3.2 Использование ресурсов : Майкл Джонсон
10.3.3. Применение ограничений использования ресурсов : Майкл Джонсон 10.4. Примитивы процессов : Майкл Джонсон
10.4.2. Наблюдение за уничтожением дочерних процессов : Майкл Джонсон 10.4.3. Запуск новых программ : Майкл Джонсон
10.4.6. Уничтожение других процессов : Майкл Джонсон 10.5. Простые дочерние процессы : Майкл Джонсон
10.5.2. Чтение и запись из процесса : Майкл Джонсон 10.6. Сеансы и группы процессов : Майкл Джонсон
10.6.3. Группы процессов : Майкл Джонсон 10.6.4. Висячие группы процессов : Майкл Джонсон
10.7. Введение в ladsh : Майкл Джонсон 10.7.1. Запуск внешних программ с помощью ladsh : Майкл Джонсон
10.8. Создание клонов : Майкл Джонсон 10.2 Атрибуты процессов : Майкл Джонсон
10.2.2. Сертификаты : Майкл Джонсон 10.2.4. Резюме по идентификаторам пользователей и групп : Майкл Джонсон
10.2.1. Идентификатор процесса и происхождение : Майкл Джонсон 10.2.2. Сертификаты : Майкл Джонсон
10.2.4. Резюме по идентификаторам пользователей и групп : Майкл Джонсон 10.3.1. Аргументы программы : Майкл Джонсон
10.3.2 Использование ресурсов : Майкл Джонсон 10.3.3. Применение ограничений использования ресурсов : Майкл Джонсон
10.3.1. Аргументы программы : Майкл Джонсон 10.3.2 Использование ресурсов : Майкл Джонсон
10.3.3. Применение ограничений использования ресурсов : Майкл Джонсон 10.4.2. Наблюдение за уничтожением дочерних процессов : Майкл Джонсон
10.4.3. Запуск новых программ : Майкл Джонсон 10.4.6. Уничтожение других процессов : Майкл Джонсон
10.4.2. Наблюдение за уничтожением дочерних процессов : Майкл Джонсон 10.4.3. Запуск новых программ : Майкл Джонсон
10.4.6. Уничтожение других процессов : Майкл Джонсон 10.5.2. Чтение и запись из процесса : Майкл Джонсон
10.5.2. Чтение и запись из процесса : Майкл Джонсон 10.6.3. Группы процессов : Майкл Джонсон
10.6.4. Висячие группы процессов : Майкл Джонсон 10.6.3. Группы процессов : Майкл Джонсон
10.6.4. Висячие группы процессов : Майкл Джонсон 10.7.1. Запуск внешних программ с помощью ladsh : Майкл Джонсон
10.7.1. Запуск внешних программ с помощью ladsh : Майкл Джонсон 10.8. Создание клонов : Майкл Джонсон
Глава 11 Простое управление файлами : Майкл Джонсон 11.1. Режим файла : Майкл Джонсон
11.1.1. Права доступа к файлу : Майкл Джонсон 11.1.2. Модификаторы прав доступа к файлам : Майкл Джонсон
11.1.3. Типы файлов : Майкл Джонсон 11.1.4. Маска umask процесса : Майкл Джонсон
11.2. Основные файловые операции : Майкл Джонсон 11.2.1. Файловые дескрипторы : Майкл Джонсон
11.2.3. Открытие файлов в файловой системе : Майкл Джонсон 11.2.4. Чтение, запись и перемещение : Майкл Джонсон
11.2.5. Частичное чтение и запись : Майкл Джонсон 11.2.7. Синхронизация файлов : Майкл Джонсон
11.3. Запрос и изменение информации inode : Майкл Джонсон 11.3.1. Поиск информации inode : Майкл Джонсон
11.3.2. Простой пример stat() : Майкл Джонсон 11.3.7. Расширенные атрибуты Ext3 : Майкл Джонсон
11.4. Манипулирование содержимым каталогов : Майкл Джонсон 11.4.1. Создание входных точек устройств и именованных каналов : Майкл Джонсон
11.4.3. Использование символических ссылок : Майкл Джонсон 11.5. Манипуляции файловыми дескрипторами : Майкл Джонсон
11.5.3. Дублирование файловых дескрипторов : Майкл Джонсон 11.7. Добавление перенаправления для ladsh : Майкл Джонсон
11.7.1. Структуры данных : Майкл Джонсон 11.7.2. Изменения в коде : Майкл Джонсон
продолжение 434 11.1.1. Права доступа к файлу : Майкл Джонсон
11.1.2. Модификаторы прав доступа к файлам : Майкл Джонсон 11.1.3. Типы файлов : Майкл Джонсон
11.1.4. Маска umask процесса : Майкл Джонсон 11.1.1. Права доступа к файлу : Майкл Джонсон
11.1.2. Модификаторы прав доступа к файлам : Майкл Джонсон 11.1.3. Типы файлов : Майкл Джонсон
11.1.4. Маска umask процесса : Майкл Джонсон 11.2.1. Файловые дескрипторы : Майкл Джонсон
11.2.3. Открытие файлов в файловой системе : Майкл Джонсон 11.2.4. Чтение, запись и перемещение : Майкл Джонсон
11.2.5. Частичное чтение и запись : Майкл Джонсон 11.2.7. Синхронизация файлов : Майкл Джонсон
11.2.1. Файловые дескрипторы : Майкл Джонсон 11.2.3. Открытие файлов в файловой системе : Майкл Джонсон
11.2.4. Чтение, запись и перемещение : Майкл Джонсон 11.2.5. Частичное чтение и запись : Майкл Джонсон
11.2.7. Синхронизация файлов : Майкл Джонсон 11.3. Запрос и изменение информации inode : Майкл Джонсон
11.3.2. Простой пример stat() : Майкл Джонсон 11.3.7. Расширенные атрибуты Ext3 : Майкл Джонсон
11.3.1. Поиск информации inode : Майкл Джонсон 11.3.2. Простой пример stat() : Майкл Джонсон
11.3.7. Расширенные атрибуты Ext3 : Майкл Джонсон 11.4.1. Создание входных точек устройств и именованных каналов : Майкл Джонсон
11.4.3. Использование символических ссылок : Майкл Джонсон 11.4.1. Создание входных точек устройств и именованных каналов : Майкл Джонсон
11.4.3. Использование символических ссылок : Майкл Джонсон 11.5.3. Дублирование файловых дескрипторов : Майкл Джонсон
11.5.3. Дублирование файловых дескрипторов : Майкл Джонсон 11.7.1. Структуры данных : Майкл Джонсон
11.7.2. Изменения в коде : Майкл Джонсон 11.7.1. Структуры данных : Майкл Джонсон
11.7.2. Изменения в коде : Майкл Джонсон Глава 12 Обработка сигналов : Майкл Джонсон
12.1. Концепция сигналов : Майкл Джонсон 12.1.2. Простые сигналы : Майкл Джонсон
12.1.3. Надежные сигналы : Майкл Джонсон 12.1.4. Сигналы и системные вызовы : Майкл Джонсон
12.2. Программный интерфейс сигналов Linux и POSIX : Майкл Джонсон 12.2.3. Перехват сигналов : Майкл Джонсон
12.2.4. Манипулирование маской сигналов процесса : Майкл Джонсон 12.3. Доступные сигналы : Майкл Джонсон
продолжение 478 : Майкл Джонсон 12.4. Написание обработчиков сигналов : Майкл Джонсон
12.5. Повторное открытие журнальных файлов : Майкл Джонсон 12.6. Сигналы реального времени : Майкл Джонсон
12.6.1. Очередность и порядок сигналов : Майкл Джонсон 12.7. Дополнительные сведения о сигналах : Майкл Джонсон
12.7.1. Получение контекста сигнала : Майкл Джонсон 12.7.2. Отправка данных с сигналом : Майкл Джонсон
продолжение 486 12.1.2. Простые сигналы : Майкл Джонсон
12.1.3. Надежные сигналы : Майкл Джонсон 12.1.4. Сигналы и системные вызовы : Майкл Джонсон
12.1.2. Простые сигналы : Майкл Джонсон 12.1.3. Надежные сигналы : Майкл Джонсон
12.1.4. Сигналы и системные вызовы : Майкл Джонсон 12.2.3. Перехват сигналов : Майкл Джонсон
12.2.4. Манипулирование маской сигналов процесса : Майкл Джонсон 12.2.3. Перехват сигналов : Майкл Джонсон
12.2.4. Манипулирование маской сигналов процесса : Майкл Джонсон 12.3. Доступные сигналы : Майкл Джонсон
продолжение 498 12.4. Написание обработчиков сигналов : Майкл Джонсон
12.5. Повторное открытие журнальных файлов : Майкл Джонсон 12.6.1. Очередность и порядок сигналов : Майкл Джонсон
12.6.1. Очередность и порядок сигналов : Майкл Джонсон 12.7.1. Получение контекста сигнала : Майкл Джонсон
12.7.2. Отправка данных с сигналом : Майкл Джонсон 12.7.1. Получение контекста сигнала : Майкл Джонсон
12.7.2. Отправка данных с сигналом : Майкл Джонсон 13.1. Мультиплексирование входных и выходных данных : Майкл Джонсон
продолжение 508 : Майкл Джонсон 13.1.1. Неблокируемый ввод-вывод : Майкл Джонсон
13.1.2. Мультиплексирование с помощью poll() : Майкл Джонсон 13.1.3. Мультиплексирование с помощью select() : Майкл Джонсон
13.1.4. Сравнение poll() и select() : Майкл Джонсон 13.1.5. Мультиплексирование с помощью epoll : Майкл Джонсон
13.1.6 Сравнение poll() и epoll : Майкл Джонсон 13.2. Отображение в памяти : Майкл Джонсон
13.2.2. Установка отображения в памяти : Майкл Джонсон 13.2.4. Синхронизация областей памяти на диск : Майкл Джонсон
13.2.5. Блокировка областей памяти : Майкл Джонсон 13.3. Блокирование файлов : Майкл Джонсон
13.3.1. Блокировочные файлы : Майкл Джонсон 13.3.2. Блокировка записей : Майкл Джонсон
13.3.4. Аренда файла : Майкл Джонсон 13.4. Альтернативы read() и write() : Майкл Джонсон
13.4.1. Разбросанное/сборное чтение и запись : Майкл Джонсон 13.4.2. Игнорирование указателя файла : Майкл Джонсон
13.1. Мультиплексирование входных и выходных данных : Майкл Джонсон 13.1.1. Неблокируемый ввод-вывод : Майкл Джонсон
13.1.2. Мультиплексирование с помощью poll() : Майкл Джонсон 13.1.3. Мультиплексирование с помощью select() : Майкл Джонсон
13.1.4. Сравнение poll() и select() : Майкл Джонсон 13.1.5. Мультиплексирование с помощью epoll : Майкл Джонсон
13.1.6 Сравнение poll() и epoll : Майкл Джонсон продолжение 533
13.1.1. Неблокируемый ввод-вывод : Майкл Джонсон 13.1.2. Мультиплексирование с помощью poll() : Майкл Джонсон
13.1.3. Мультиплексирование с помощью select() : Майкл Джонсон 13.1.4. Сравнение poll() и select() : Майкл Джонсон
13.1.5. Мультиплексирование с помощью epoll : Майкл Джонсон 13.1.6 Сравнение poll() и epoll : Майкл Джонсон
13.2.2. Установка отображения в памяти : Майкл Джонсон 13.2.4. Синхронизация областей памяти на диск : Майкл Джонсон
13.2.5. Блокировка областей памяти : Майкл Джонсон 13.2.2. Установка отображения в памяти : Майкл Джонсон
13.2.4. Синхронизация областей памяти на диск : Майкл Джонсон 13.2.5. Блокировка областей памяти : Майкл Джонсон
13.3.1. Блокировочные файлы : Майкл Джонсон 13.3.2. Блокировка записей : Майкл Джонсон
13.3.4. Аренда файла : Майкл Джонсон 13.3.1. Блокировочные файлы : Майкл Джонсон
13.3.2. Блокировка записей : Майкл Джонсон 13.3.4. Аренда файла : Майкл Джонсон
13.4.1. Разбросанное/сборное чтение и запись : Майкл Джонсон 13.4.2. Игнорирование указателя файла : Майкл Джонсон
13.4.1. Разбросанное/сборное чтение и запись : Майкл Джонсон 13.4.2. Игнорирование указателя файла : Майкл Джонсон
14.1. Текущий рабочий каталог : Майкл Джонсон 14.1.1. Поиск текущего рабочего каталога : Майкл Джонсон
14.4. Чтение содержимого каталога : Майкл Джонсон продолжение 559 : Майкл Джонсон
14.5. Универсализация файловых имен : Майкл Джонсон 14.5.2. Внутренняя универсализация : Майкл Джонсон
14.6. Добавление к ladsh возможностей работы с каталогами и универсализацией : Майкл Джонсон 14.6.2. Добавление универсализации файловых имен : Майкл Джонсон
14.7. Обход деревьев файловых систем : Майкл Джонсон 14.7.1. Использование ftw() : Майкл Джонсон
14.7.2. Обход дерева файлов с помощью nft() : Майкл Джонсон 14.7.3. Реализация find : Майкл Джонсон
14.8. Уведомление о смене каталога : Майкл Джонсон 14.1. Текущий рабочий каталог : Майкл Джонсон
14.1.1. Поиск текущего рабочего каталога : Майкл Джонсон 14.4. Чтение содержимого каталога : Майкл Джонсон
продолжение 572 14.5.2. Внутренняя универсализация : Майкл Джонсон
14.5.2. Внутренняя универсализация : Майкл Джонсон 14.6.2. Добавление универсализации файловых имен : Майкл Джонсон
14.6.2. Добавление универсализации файловых имен : Майкл Джонсон 14.7.1. Использование ftw() : Майкл Джонсон
14.7.2. Обход дерева файлов с помощью nft() : Майкл Джонсон 14.7.3. Реализация find : Майкл Джонсон
14.7.1. Использование ftw() : Майкл Джонсон 14.7.2. Обход дерева файлов с помощью nft() : Майкл Джонсон
14.7.3. Реализация find : Майкл Джонсон 14.8. Уведомление о смене каталога : Майкл Джонсон
15.1. Основы управления заданиями : Майкл Джонсон 15.1.3. Обработка сигналов управления заданиями : Майкл Джонсон
15.2. Управление заданиями в ladsh : Майкл Джонсон 15.1.3. Обработка сигналов управления заданиями : Майкл Джонсон
15.1.3. Обработка сигналов управления заданиями : Майкл Джонсон 15.2. Управление заданиями в ladsh : Майкл Джонсон
Глава 16 Терминалы и псевдотерминалы : Майкл Джонсон 16.1. Операции tty : Майкл Джонсон
16.1.2. Управляющие терминалы : Майкл Джонсон 16.1.4. Запись с помощью utempter : Майкл Джонсон
16.1.5. Запись вручную : Майкл Джонсон 16.2. Обзор termios : Майкл Джонсон
16.3. Примеры использования termios : Майкл Джонсон 16.3.1. Пароли : Майкл Джонсон
16.3.2. Последовательные коммуникации : Майкл Джонсон 16.4. Отладка termios : Майкл Джонсон
16.5. Справочник по termios : Майкл Джонсон 16.5.1. Функции : Майкл Джонсон
16.5.4. Флаги режима ввода : Майкл Джонсон 16.5.5. Флаги режима вывода : Майкл Джонсон
16.5.6. Управляющие флаги : Майкл Джонсон 16.5.7. Управляющие символы : Майкл Джонсон
16.5.8. Локальные флаги : Майкл Джонсон 16.5.9. Управление read() : Майкл Джонсон
16.6. Псевдотерминалы : Майкл Джонсон 16.6.1. Открытие псевдотерминалов : Майкл Джонсон
16.6.2. Простые способы открытия псевдотерминалов : Майкл Джонсон 16.6.3. Сложные способы открытия псевдотерминалов : Майкл Джонсон
16.6.4. Примеры псевдотерминалов : Майкл Джонсон продолжение 613
16.1.2. Управляющие терминалы : Майкл Джонсон 16.1.4. Запись с помощью utempter : Майкл Джонсон
16.1.5. Запись вручную : Майкл Джонсон 16.1.2. Управляющие терминалы : Майкл Джонсон
16.1.4. Запись с помощью utempter : Майкл Джонсон 16.1.5. Запись вручную : Майкл Джонсон
16.2. Обзор termios : Майкл Джонсон 16.3. Примеры использования termios : Майкл Джонсон
16.3.2. Последовательные коммуникации : Майкл Джонсон 16.3.1. Пароли : Майкл Джонсон
16.3.2. Последовательные коммуникации : Майкл Джонсон 16.4. Отладка termios : Майкл Джонсон
16.5.1. Функции : Майкл Джонсон 16.5.4. Флаги режима ввода : Майкл Джонсон
16.5.5. Флаги режима вывода : Майкл Джонсон 16.5.6. Управляющие флаги : Майкл Джонсон
16.5.7. Управляющие символы : Майкл Джонсон 16.5.8. Локальные флаги : Майкл Джонсон
16.5.9. Управление read() : Майкл Джонсон 16.5.1. Функции : Майкл Джонсон
16.5.4. Флаги режима ввода : Майкл Джонсон 16.5.5. Флаги режима вывода : Майкл Джонсон
16.5.6. Управляющие флаги : Майкл Джонсон 16.5.7. Управляющие символы : Майкл Джонсон
16.5.8. Локальные флаги : Майкл Джонсон 16.5.9. Управление read() : Майкл Джонсон
16.6.1. Открытие псевдотерминалов : Майкл Джонсон 16.6.2. Простые способы открытия псевдотерминалов : Майкл Джонсон
16.6.3. Сложные способы открытия псевдотерминалов : Майкл Джонсон 16.6.4. Примеры псевдотерминалов : Майкл Джонсон
16.6.1. Открытие псевдотерминалов : Майкл Джонсон 16.6.2. Простые способы открытия псевдотерминалов : Майкл Джонсон
16.6.3. Сложные способы открытия псевдотерминалов : Майкл Джонсон 16.6.4. Примеры псевдотерминалов : Майкл Джонсон
17.1. Поддержка протоколов : Майкл Джонсон 17.1.3. Как заставить реальность играть по точным правилам? : Майкл Джонсон
17.1.4. Адреса : Майкл Джонсон 17.3. Основные действия с сокетами : Майкл Джонсон
17.3.1. Создание сокета : Майкл Джонсон 17.3.4. Ожидание соединений : Майкл Джонсон
17.4. Сокеты домена Unix : Майкл Джонсон 17.4.2. Ожидание соединения : Майкл Джонсон
17.4.6. Передача файловых дескрипторов : Майкл Джонсон 17.5. Сетевая обработка с помощью TCP/IP : Майкл Джонсон
17.5.1. Упорядочение байтов : Майкл Джонсон 17.5.2. Адресация IPv4 : Майкл Джонсон
17.5.3. Адресация IPv6 : Майкл Джонсон 17.5.4. Манипулирование IP-адресами : Майкл Джонсон
17.5.5. Преобразование имен в адреса : Майкл Джонсон 17.5.6. Преобразование адресов в имена : Майкл Джонсон
17.5.7. Ожидание TCP-соединений : Майкл Джонсон 17.5.8. Клиентские приложения TCP : Майкл Джонсон
17.6. Использование дейтаграмм UDP : Майкл Джонсон продолжение 667 : Майкл Джонсон
17.6.1. Создание UDP-сокета : Майкл Джонсон 17.6.2. Отправка и получение дейтаграмм : Майкл Джонсон
17.6.3. Простой tftp-сервер : Майкл Джонсон 17.7. Ошибки сокетов : Майкл Джонсон
17.8. Унаследованные сетевые функции : Майкл Джонсон 17.8.1. Манипулирование IPv4-адресами : Майкл Джонсон
17.8.2. Преобразование имен хостов : Майкл Джонсон 17.8.3. Пример поиска информации хоста с использованием унаследованных функций : Майкл Джонсон
17.8.4. Поиск номеров портов : Майкл Джонсон 17.1.3. Как заставить реальность играть по точным правилам? : Майкл Джонсон
17.1.4. Адреса : Майкл Джонсон 17.1.3. Как заставить реальность играть по точным правилам? : Майкл Джонсон
17.1.4. Адреса : Майкл Джонсон 17.3.1. Создание сокета : Майкл Джонсон
17.3.4. Ожидание соединений : Майкл Джонсон 17.3.1. Создание сокета : Майкл Джонсон
17.3.4. Ожидание соединений : Майкл Джонсон 17.4.2. Ожидание соединения : Майкл Джонсон
17.4.6. Передача файловых дескрипторов : Майкл Джонсон продолжение 687
17.4.2. Ожидание соединения : Майкл Джонсон 17.4.6. Передача файловых дескрипторов : Майкл Джонсон
17.5.1. Упорядочение байтов : Майкл Джонсон 17.5.2. Адресация IPv4 : Майкл Джонсон
17.5.3. Адресация IPv6 : Майкл Джонсон 17.5.4. Манипулирование IP-адресами : Майкл Джонсон
17.5.5. Преобразование имен в адреса : Майкл Джонсон 17.5.6. Преобразование адресов в имена : Майкл Джонсон
17.5.7. Ожидание TCP-соединений : Майкл Джонсон 17.5.8. Клиентские приложения TCP : Майкл Джонсон
17.5.1. Упорядочение байтов : Майкл Джонсон 17.5.2. Адресация IPv4 : Майкл Джонсон
17.5.3. Адресация IPv6 : Майкл Джонсон 17.5.4. Манипулирование IP-адресами : Майкл Джонсон
17.5.5. Преобразование имен в адреса : Майкл Джонсон 17.5.6. Преобразование адресов в имена : Майкл Джонсон
17.5.7. Ожидание TCP-соединений : Майкл Джонсон 17.5.8. Клиентские приложения TCP : Майкл Джонсон
17.6. Использование дейтаграмм UDP : Майкл Джонсон 17.6.1. Создание UDP-сокета : Майкл Джонсон
17.6.2. Отправка и получение дейтаграмм : Майкл Джонсон 17.6.3. Простой tftp-сервер : Майкл Джонсон
продолжение 710 17.6.1. Создание UDP-сокета : Майкл Джонсон
17.6.2. Отправка и получение дейтаграмм : Майкл Джонсон 17.6.3. Простой tftp-сервер : Майкл Джонсон
17.7. Ошибки сокетов : Майкл Джонсон 17.8.1. Манипулирование IPv4-адресами : Майкл Джонсон
17.8.2. Преобразование имен хостов : Майкл Джонсон 17.8.3. Пример поиска информации хоста с использованием унаследованных функций : Майкл Джонсон
17.8.4. Поиск номеров портов : Майкл Джонсон 17.8.1. Манипулирование IPv4-адресами : Майкл Джонсон
17.8.2. Преобразование имен хостов : Майкл Джонсон 17.8.3. Пример поиска информации хоста с использованием унаследованных функций : Майкл Джонсон
17.8.4. Поиск номеров портов : Майкл Джонсон Глава 18 Время : Майкл Джонсон
18.1.1. Представление времени : Майкл Джонсон 18.1.2. Преобразование, форматирование и разбор значений времени : Майкл Джонсон
18.1.3. Ограничения, связанные со временем : Майкл Джонсон 18.2. Использование таймеров : Майкл Джонсон
18.2.1. Режим ожидания : Майкл Джонсон 18.2.2. Интервальные таймеры : Майкл Джонсон
18.1. Вывод времени и даты : Майкл Джонсон 18.1.2. Преобразование, форматирование и разбор значений времени : Майкл Джонсон
18.1.3. Ограничения, связанные со временем : Майкл Джонсон 18.1.1. Представление времени : Майкл Джонсон
18.1.2. Преобразование, форматирование и разбор значений времени : Майкл Джонсон 18.1.3. Ограничения, связанные со временем : Майкл Джонсон
18.2.1. Режим ожидания : Майкл Джонсон 18.2.2. Интервальные таймеры : Майкл Джонсон
18.2.1. Режим ожидания : Майкл Джонсон 18.2.2. Интервальные таймеры : Майкл Джонсон
19.1. Псевдослучайные числа : Майкл Джонсон 19.2. Криптография и случайные числа : Майкл Джонсон
19.1. Псевдослучайные числа : Майкл Джонсон 19.2. Криптография и случайные числа : Майкл Джонсон
Глава 20 Программирование виртуальных консолей : Майкл Джонсон 20.1. Начало работы : Майкл Джонсон
20.5. Управление переключением виртуальных консолей : Майкл Джонсон 20.6. Пример команды open : Майкл Джонсон
продолжение 748 20.1. Начало работы : Майкл Джонсон
20.5. Управление переключением виртуальных консолей : Майкл Джонсон 20.6. Пример команды open : Майкл Джонсон
Глава 21 Консоль Linux : Майкл Джонсон 21.1. Базы данных возможностей : Майкл Джонсон
21.3. Возможности консоли Linux : Майкл Джонсон продолжение 755 : Майкл Джонсон
21.3.1. Управляющие символы : Майкл Джонсон 21.3.2. Управляющие последовательности : Майкл Джонсон
21.3.4. Составные управляющие последовательности : Майкл Джонсон 21.4. Прямой вывод на экран : Майкл Джонсон
продолжение 760 21.1. Базы данных возможностей : Майкл Джонсон
21.3. Возможности консоли Linux : Майкл Джонсон 21.3.1. Управляющие символы : Майкл Джонсон
21.3.2. Управляющие последовательности : Майкл Джонсон 21.3.4. Составные управляющие последовательности : Майкл Джонсон
продолжение 766 21.3.1. Управляющие символы : Майкл Джонсон
21.3.2. Управляющие последовательности : Майкл Джонсон 21.3.4. Составные управляющие последовательности : Майкл Джонсон
21.4. Прямой вывод на экран : Майкл Джонсон 22.1. Когда безопасность имеет значение? : Майкл Джонсон
продолжение 772 : Майкл Джонсон 22.1.1. Когда выходит из строя система безопасности? : Майкл Джонсон
22.2. Минимизация возможности появления атак : Майкл Джонсон 22.2.1. Передача полномочий : Майкл Джонсон
22.2.2. Получение вспомогательной программы : Майкл Джонсон 22.3. Общие бреши системы безопасности : Майкл Джонсон
22.3.1. Переполнение буфера : Майкл Джонсон 22.3.3. Переменные окружения : Майкл Джонсон
22.3.5. Создание временных файлов : Майкл Джонсон 22.3.6. Режимы состязаний и обработчики сигналов : Майкл Джонсон
22.4. Запуск в качестве демона : Майкл Джонсон 22.1. Когда безопасность имеет значение? : Майкл Джонсон
22.1.1. Когда выходит из строя система безопасности? : Майкл Джонсон продолжение 785
22.1.1. Когда выходит из строя система безопасности? : Майкл Джонсон 22.2.1. Передача полномочий : Майкл Джонсон
22.2.2. Получение вспомогательной программы : Майкл Джонсон 22.2.1. Передача полномочий : Майкл Джонсон
22.2.2. Получение вспомогательной программы : Майкл Джонсон 22.3.1. Переполнение буфера : Майкл Джонсон
22.3.3. Переменные окружения : Майкл Джонсон 22.3.5. Создание временных файлов : Майкл Джонсон
22.3.6. Режимы состязаний и обработчики сигналов : Майкл Джонсон 22.3.1. Переполнение буфера : Майкл Джонсон
22.3.3. Переменные окружения : Майкл Джонсон 22.3.5. Создание временных файлов : Майкл Джонсон
22.3.6. Режимы состязаний и обработчики сигналов : Майкл Джонсон 22.4. Запуск в качестве демона : Майкл Джонсон
Часть IV Библиотеки для разработки : Майкл Джонсон 23.1. Универсализация произвольных строк : Майкл Джонсон
23.2. Регулярные выражения : Майкл Джонсон 23.2.2. Сопоставление с регулярными выражениями : Майкл Джонсон
23.2.3. Простая утилита grep : Майкл Джонсон Глава 24 Управление терминалами с помощью библиотеки S-Lang : Майкл Джонсон
24.1. Обработка ввода : Майкл Джонсон 24.1.1. Инициализация обработки ввода в S-Lang : Майкл Джонсон
24.2. Обработка вывода : Майкл Джонсон 24.2.6. Переключение наборов символов : Майкл Джонсон
24.2.7. Запись на экран : Майкл Джонсон 24.2.8. Рисование линий и прямоугольников : Майкл Джонсон
24.2.9. Использование цвета : Майкл Джонсон Глава 25 Библиотека хешированных баз данных : Майкл Джонсон
25.1. Обзор : Майкл Джонсон 25.2. Основные операции : Майкл Джонсон
25.2.1. Открытие файла qdbm : Майкл Джонсон 25.3. Чтение записей : Майкл Джонсон
25.3.1. Чтение определенной записи : Майкл Джонсон 25.4. Модификация базы данных : Майкл Джонсон
25.5. Пример : Майкл Джонсон Глава 26 Синтаксический анализ параметров командной строки : Майкл Джонсон
продолжение 822 : Майкл Джонсон 26.1. Таблица параметров : Майкл Джонсон
26.1.1. Определение параметров : Майкл Джонсон 26.1.2. Вложенные таблицы параметров : Майкл Джонсон
26.2. Использование таблиц параметров : Майкл Джонсон 26.2.1. Создание содержимого : Майкл Джонсон
26.2.2. Синтаксический анализ командной строки : Майкл Джонсон 26.2.4. Автоматические справочные сообщения : Майкл Джонсон
26.3. Использование обратных вызовов : Майкл Джонсон 26.4. Обработка ошибок : Майкл Джонсон
26.5. Псевдонимы параметров : Майкл Джонсон Глава 27 Динамическая загрузка во время выполнения : Майкл Джонсон
продолжение 834 : Майкл Джонсон 27.1. Интерфейс dl : Майкл Джонсон
продолжение 836 : Майкл Джонсон Глава 28 Идентификация и аутентификация пользователей : Майкл Джонсон
28.1. Преобразование идентификатора в имя : Майкл Джонсон продолжение 839 : Майкл Джонсон
28.1.1. Пример: команда id : Майкл Джонсон 28.2. Подключаемые модули аутентификации (РАМ) : Майкл Джонсон
продолжение 842 : Майкл Джонсон 28.2.1. Диалоги РАМ : Майкл Джонсон
28.2.2. Действия РАМ : Майкл Джонсон 23.1. Универсализация произвольных строк : Майкл Джонсон
23.2. Регулярные выражения : Майкл Джонсон 23.2.2. Сопоставление с регулярными выражениями : Майкл Джонсон
23.2.3. Простая утилита grep : Майкл Джонсон 23.1. Универсализация произвольных строк : Майкл Джонсон
23.2.2. Сопоставление с регулярными выражениями : Майкл Джонсон 23.2.3. Простая утилита grep : Майкл Джонсон
23.2.2. Сопоставление с регулярными выражениями : Майкл Джонсон 23.2.3. Простая утилита grep : Майкл Джонсон
24.1. Обработка ввода : Майкл Джонсон 24.1.1. Инициализация обработки ввода в S-Lang : Майкл Джонсон
24.2. Обработка вывода : Майкл Джонсон 24.2.6. Переключение наборов символов : Майкл Джонсон
24.2.7. Запись на экран : Майкл Джонсон 24.2.8. Рисование линий и прямоугольников : Майкл Джонсон
24.2.9. Использование цвета : Майкл Джонсон 24.1.1. Инициализация обработки ввода в S-Lang : Майкл Джонсон
продолжение 862 24.1.1. Инициализация обработки ввода в S-Lang : Майкл Джонсон
24.2.6. Переключение наборов символов : Майкл Джонсон 24.2.7. Запись на экран : Майкл Джонсон
24.2.8. Рисование линий и прямоугольников : Майкл Джонсон 24.2.9. Использование цвета : Майкл Джонсон
24.2.6. Переключение наборов символов : Майкл Джонсон 24.2.7. Запись на экран : Майкл Джонсон
24.2.8. Рисование линий и прямоугольников : Майкл Джонсон 24.2.9. Использование цвета : Майкл Джонсон
25.1. Обзор : Майкл Джонсон 25.2. Основные операции : Майкл Джонсон
25.2.1. Открытие файла qdbm : Майкл Джонсон 25.3. Чтение записей : Майкл Джонсон
25.3.1. Чтение определенной записи : Майкл Джонсон 25.4. Модификация базы данных : Майкл Джонсон
25.5. Пример : Майкл Джонсон 25.1. Обзор : Майкл Джонсон
25.2. Основные операции : Майкл Джонсон 25.2.1. Открытие файла qdbm : Майкл Джонсон
25.3.1. Чтение определенной записи : Майкл Джонсон 25.3.1. Чтение определенной записи : Майкл Джонсон
25.5. Пример : Майкл Джонсон Глава 26 Синтаксический анализ параметров командной строки : Майкл Джонсон
26.1. Таблица параметров : Майкл Джонсон 26.1.1. Определение параметров : Майкл Джонсон
26.1.2. Вложенные таблицы параметров : Майкл Джонсон 26.2. Использование таблиц параметров : Майкл Джонсон
26.2.1. Создание содержимого : Майкл Джонсон 26.2.2. Синтаксический анализ командной строки : Майкл Джонсон
26.2.4. Автоматические справочные сообщения : Майкл Джонсон 26.3. Использование обратных вызовов : Майкл Джонсон
26.4. Обработка ошибок : Майкл Джонсон 26.5. Псевдонимы параметров : Майкл Джонсон
продолжение 896 26.1. Таблица параметров : Майкл Джонсон
26.1.2. Вложенные таблицы параметров : Майкл Джонсон 26.1.1. Определение параметров : Майкл Джонсон
26.1.2. Вложенные таблицы параметров : Майкл Джонсон 26.2. Использование таблиц параметров : Майкл Джонсон
26.2.2. Синтаксический анализ командной строки : Майкл Джонсон 26.2.4. Автоматические справочные сообщения : Майкл Джонсон
26.2.1. Создание содержимого : Майкл Джонсон 26.2.2. Синтаксический анализ командной строки : Майкл Джонсон
26.2.4. Автоматические справочные сообщения : Майкл Джонсон 26.3. Использование обратных вызовов : Майкл Джонсон
26.4. Обработка ошибок : Майкл Джонсон Глава 27 Динамическая загрузка во время выполнения : Майкл Джонсон
27.1. Интерфейс dl : Майкл Джонсон продолжение 911 : Майкл Джонсон
продолжение 912 27.1. Интерфейс dl : Майкл Джонсон
продолжение 914 28.1. Преобразование идентификатора в имя : Майкл Джонсон
продолжение 916 : Майкл Джонсон 28.1.1. Пример: команда id : Майкл Джонсон
28.2. Подключаемые модули аутентификации (РАМ) : Майкл Джонсон продолжение 919 : Майкл Джонсон
28.2.1. Диалоги РАМ : Майкл Джонсон 28.2.2. Действия РАМ : Майкл Джонсон
28.1. Преобразование идентификатора в имя : Майкл Джонсон 28.1.1. Пример: команда id : Майкл Джонсон
продолжение 924 28.1.1. Пример: команда id : Майкл Джонсон
28.2. Подключаемые модули аутентификации (РАМ) : Майкл Джонсон 28.2.1. Диалоги РАМ : Майкл Джонсон
28.2.2. Действия РАМ : Майкл Джонсон продолжение 929
28.2.1. Диалоги РАМ : Майкл Джонсон 28.2.2. Действия РАМ : Майкл Джонсон
Приложение Б Исходный код ladsh : Майкл Джонсон Приложение Б Исходный код ladsh : Майкл Джонсон
Глоссарий : Майкл Джонсон Литература : Майкл Джонсон
notes.html    

Разделы
Околокомпьютерная литература (375)
Программирование (102)
Программы (75)
ОС и Сети (49)
Интернет (29)
Аппаратное обеспечение (16)
Базы данных (6)


Microsoft Office Журнал Компьютерра № 32 от 5 сентября 2006 года Журнал Компьютерра № 34 от 18 сентября 2006 года