Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

Книги: [Классика] [Базы данных] [Internet/WWW] [Сети] [Программирование] [UNIX] [Windows] [Безопасность] [Графика] [Software Engineering] [ERP-системы] [Hardware]

     

Системное программирование в UNIX

Кейт Хэвиленд, Дайна Грэй, Бен Салама

Издано:2000, M., ДМК Пресс
Для профессионалов
ISBN: 5-94074-008-1
Мягкий переплет, 368 стр.
Формат: 70x100/16

Начало
Полное содержание
Структура книги
[Заказать книгу в магазине "Мистраль"]

Предисловие

Назначение этой книги

Со времени своего появления в Bell Laboratories в 1969 г. операционная система UNIX становилась все более популярной, вначале получив признание в академическом мире, а затем уже в качестве стандартной операционной системы для нового поколения многопользовательских микро- и миникомпьютеров в 80-х годах. И этот рост, повидимому, продолжается в момент написания данной книги.

Так начиналось первое издание книги (1987 г.). Более чем десять лет спустя операционная система UNIX оправдала возлагавшиеся на нее надежды и теперь является ключевой деталью технологического пейзажа на рубеже XXI века. Не говоря уже о том, что UNIX всегда занимала сильные позиции в научном и техническом сообществах, в настоящее время существует множество крупномасштабных систем управления данными и обработки транзакций на платформе UNIX. Но, самое главное, ОС UNIX, безусловно, является ядром серверов магистральной сети Internet.

Книга "UNIX System Programming" ("Системное программирование в UNIX") прекрасно продавалась, причем первое издание с тех пор переиздавалось один или два раза в год. Эта книга оказалась удивительно жизнеспособной, поскольку раскрывала стандартную и стабильную природу операционной системы UNIX. Однако к настоящему моменту накопилось достаточно изменений, чтобы стала ощутимой потребность в публикации второго издания книги; кроме того, мы хотели охватить темы, касающиеся более распределенных конфигураций, типичных для решений в сфере информационных технологий в конце 90-х.

Вместе с тем основная цель при написании второго издания осталась прежней. Основное внимание, как и прежде, уделяется программному интерфейсу между ядром UNIX (частью UNIX, которая делает ее операционной системой) и прикладным программным обеспечением, которое выполняется в среде UNIX. Этот интерфейс часто называется интерфейсом системных вызовов UNIX (хотя разница между такими вызовами и обычными библиотечными процедурами теперь уже не столь очевидна, как это было раньше). В дальнейшем мы увидим, что системные вызовы - это примитивы, на которых в конечном счете построены все программы UNIX - и поставляемые вместе с операционной системой, и разрабатываемые независимо. Целевая аудитория книги состоит из программистов, уже знакомых с UNIX, которые собираются разрабатывать программное обеспечение для ОС UNIX на языке С. Эта книга в равной мере подойдет разработчикам системного программного обеспечения и прикладных или деловых приложений -фактически всем, кто серьезно интересуется разработкой программ для ОС UNIX. Кроме системных вызовов мы также рассмотрим некоторые из наиболее важных библиотек подпрограмм, которые поставляются с системой UNIX. Эти библиотеки, конечно же, написаны с использованием системных вызовов и во многих случаях делают то же самое, но на более высоком уровне, или более удобны для использования программистами. Надеемся, что при исследовании как системных вызовов, так и библиотеки подпрограмм вы получите представление о том, когда можно пользоваться существующими достижениями, не "изобретая велосипед", а также лучше поймете внутреннее устройство этой все еще прекрасной операционной системы.

Спецификация Х/Ореn

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

Первое издание книги "Системное программирование в UNIX" было основано на втором выпуске AT&T System V Interface Definition (SVID - описания интерфейса System V) - одной из наиболее важных реализаций UNIX. Во втором описании книги мы положили в основу текста и примеров документы (все датированные 1994 годом) System Interface Definitions (Описания системного интерфейса) и System Interfaces and Headers (Системные интерфейсы и заголовки) из 4-й версии второго выпуска Х/Open, а также часть связанного с ними документа Networking Services (Сетевые сервисы). Для удобства мы будем применять сокращение XSI - от X/Open System Interfaces (Системные интерфейсы Х/Open). При необходимости особенности различных реализаций системы будут обсуждаться отдельно.

Здесь нужно сделать небольшое отступление. Консорциум Х/Open первоначально объединил производителей аппаратного обеспечения, серьезно заинтересованных в открытых операционных системах и платформе UNIX, но со временем число его членов возросло. Одна из главных задач консорциума состояла в выработке практического стандарта UNIX, и руководство по обеспечению мобильности программ, называемое XPG, послужило базовым документом для проекта нескольких основных производителей (включая Sun, IBM, Hewlett Packard, Novell и Open Software Foundation), обычно называемого Spec 1170 Initiative (1170 - это число охватываемых этим документом вызовов, заголовков, команд и утилит). Целью этого проекта было создание единой унифицированной спецификации системных сервисов UNIX, включая системные вызовы, которые являются основой этого документа. В результате получился удобный набор спецификаций, объединивший многие конфликтующие направления в стандартизации UNIX, главную часть которых составляют вышеупомянутые документы.

Другие представленные разработки охватывали основные команды UNIX и обработку вывода на экран.

С точки зрения системного программирования, документы XSI формируют практическую базу, и множество примеров из книги будет выполняться на большинстве существующих платформ UNIX. Стандарт Х/Open объединяет ряд соответствующих и дополняющих друг друга стандартов с их практической реализацией. Он объединил в себе ANSI/ISO стандарт языка С, важный базовый стандарт POSIX (IEEE 1003.1-1990) и стандарт SVID, а также позаимствовал элементы спецификаций Open Software Foundation (Организации открытого программного обеспечения) и некоторые известные функции из системы Berkeley UNIX, оказавшей большое влияние на развитие UNIX систем в целом.

Конечно, стандартизация продолжилась и в дальнейшем. В 1996 г. в результате слияния Х/Open и OSF (Open Software Foundation) образовалась Группа открытых стандартов (The Open Group). Последние разработки (на момент написания книги) из стандарта POSIX, с учетом опыта практической реализации, Группа открытых стандартов называет второй версией Single UNIX Specification (Единой спецификации UNIX, далее по тексту - SUSV2), которая, в свою очередь, содержит пятый выпуск System Interface Definitions, System Interfaces and Headers и Networking Services. Эти важные, хотя и специализированные, дополнения охватывают такие области/как потоки, расширения реального времени и динамическая компоновка.

В заключение заметим, что:

  • все стандарты являются очень обширными, охватывая альтернативные методы реализации и редко используемые, но все же важные функциональные возможности. Основное внимание в этой книге уделяется основам программирования в среде UNIX, а не полному описанию системы в соответствии с базовыми стандартами;
  • при необходимости создания программы, строго следующей стандартам, необходимо предусмотреть в ней установку (и проверку) соответствующих флагов, таких как _XOPEN_SOURCE или _POSIX_SOURCE.

Что вы должны знать

Эта книга не является учебником по системе UNIX или языку программирования С, а подробно исследует интерфейс системных вызовов UNIX. Чтобы использовать ее наилучшим образом, необходимо хорошо изучить следующие темы:

  • вход в систему UNIX;
  • создание файлов при помощи одного из стандартных редакторов системы;
  • древовидную структуру каталогов UNIX;
  • основные команды работы с файлами и каталогами;
  • создание и компиляцию простых программ на языке С (включая программы, текст которых находится в нескольких файлах);
  • процедуры ввода/вывода printf и getchar;
  • использование аргументов командной строки argc и argv;
  • применение man-системы (интерактивного справочного руководства системы). К сожалению, сейчас уже нельзя давать общие советы для работы со справочным руководством в различных системах, поскольку в формат руководства, прежде считавшийся стандартным, были внесены изменения несколькими производителями. Традиционно руководство было разбито на восемь разделов, каждый из которых был структурирован по алфавитному принципу. Наиболее важными являются три из них: раздел 1, описывающий команды; раздел 2, в котором представлены системные вызовы, и раздел 3, охватывающий функции стандартных библиотек.

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

Наконец, стоит отметить, что для изучения информатики недостаточно простого чтения, поэтому на протяжении всей книги делается акцент на упражнения и примеры. Для выполнения упражнений вы должны иметь доступ к компьютеру с системой UNIX.

Изменения по сравнению с первым изданием

В этом разделе описаны введенные изменения для тех, кто знаком с первым изданием книги. Если вы читаете эту книгу впервые, можете пропустить этот раздел. Основные изменения заключаются в следующем:

  • для описания параметров и возвращения значений, связанных с системными вызовами и другими функциями, использованы обычные методы создания прототипов функций ANSI С (с некоторыми уступками для удобочитаемости).
  • были включены дополнительные типы, введенные в стандарт UNIX за последнее десятилетие, в том числе:
      ssize_t Информация о размере файлов
      mode_t  Информация об атрибутах/правах доступа
      off_t   Смещение при произвольном доступе к файлам
      uid_t   Номер идентификатора пользователя user-id
      gid_t   Номер идентификатора группы group-id
      pid_t   Номер идентификатора процесса UNIX process-id
      

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

Изменения по главам:

  • глава 1 претерпела лишь небольшие изменения;
  • глава 2 в основном осталась без изменений, хотя в ней подчеркнуто использование вызова open вместо creat и представлен вызов remove в качестве альтернативы unlink;
  • изменения в главе 3 включают описание символьных констант, представляющих значения прав доступа, краткое описание вызова rename и обсуждение символьных ссылок;
  • глава 4 была обновлена и содержит теперь обсуждение вызова mkdir и новые процедуры доступа к каталогам. Также представлены вызовы для управления файлами и ограничения каталогов;
  • в главе 5 более внимательно рассмотрены вызовы wait и waitpid, и эта глава теперь также охватывает группы, сеансы и идентификаторы сеансов;
  • глава 6 претерпела значительные изменения. Вместо вызова signal вводится более безопасный вызов sigaction с дополнительными средствами для работы с наборами сигналов;
  • в первом издании глава 7 была частью главы 6, но из соображений удобочитаемости она была разбита на две. Большая часть материала мало изменилась, но был добавлен раздел, посвященный примеру использования вызова select для работы с набором конвейеров;
  • в главе 8 был модернизирован раздел, посвященный блокировке записей. Небольшие изменения были также внесены в разделы, посвященные разделяемой памяти, семафорам и очередям сообщений;
  • глава 9 подверглась значительным изменениям и теперь включает больше данных о внутренней структуре ядра, и в ней вместо ioctl применяются более удобные для использования структуры termios. Основной пример, демонстрирующий передачу файлов, был заменен (учитывая повсеместное объединение компьютеров в сети в настоящее время) на другой, использующий псевдотерминалы;
  • глава 10 отсутствовала в первом издании, и она посвящена использованию сокетов в сетях UNIX-систем;
  • глава 11 (глава 9 в первом издании) претерпела незначительные изменения;
  • глава 12 (глава 11 в первом издании) теперь включает раздел о вводе/выводе с отображением в память;
  • и, наконец, заметим, что глава 10 из первого издания, которая была посвящена библиотеке работы с алфавитно-цифровым экраном curses, была опущена, так как она практически не нужна в эпоху графических интерфейсов.

Начало
Полное содержание
Структура книги
Заказать книгу в магазине "Мистраль"

 

VPS в России, Европе и США

Бесплатная поддержка и администрирование

Оплата российскими и международными картами

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...