Главная » Программирование для UNIX » Программирование с использованием стандартного ввода−вывода

0

До сих  пор  для  создания новых  инструментов применялись уже  существующие, но  надо  сказать,  практически все,  что  можно сделать при помощи оболочки, sed и awk, уже  сделано. В этой  главе мы  напишем  несколько программ на языке программирования Си. В дальнейшем при обсуждении и разработке программного дизайна также будет доминировать основополагающая философия создания программ для совместной работы – мы хотим создавать инструменты, с помощью которых другие смогут  создавать собственные инструменты. Для каждого примера будет рассмотрена стратегия реализации, представляющаяся  авторам наиболее разумной: программа начинается с абсолютного минимума,  выполняющего  какую-нибудь полезную функцию, затем по мере необходимости к нему добавляются различные свойства и возможности.

Есть  веские основания писать программы  с нуля. Может случиться так, что поставленную задачу просто  невозможно решить с помощью существующих программ. Так  часто  бывает с программами, которые должны обрабатывать нетекстовые файлы. Надо сказать, что бoльшая часть   программ,  представленных ранее, успешно работает  только с текстовой  информацией.  Если  же  решение,  использующее  только средства оболочки и другие универсальные средства, существует, оно может быть недостаточно надежным и производительным. В этом случае  версия, написанная в оболочке, хорошо подходит для  уточнения спецификации и пользовательского интерфейса. (И если  она работает достаточно хорошо, нет  смысла переделывать программу.) Характерным примером является команда zap из предыдущей главы: создание первой версии в оболочке заняло всего  несколько минут, окончатель-

ная  версия предоставляет вполне пригодный пользовательский интерфейс, но работает программа слишком медленно.

Выбран именно язык  Си,  потому   что  это  стандартный язык  систем UNIX  – ядро и все пользовательские программы написаны на Си, и, если  честно, остальные языки далеко не так хорошо поддерживаются. Предполагается, что вы знаете Си, по крайней мере  настолько, чтобы понять написанное. Если  это не так, прочтите книгу «The  C Programming   Language» Б. В. Кернигана  (B. W. Kernighan)   и   Д. М. Ритчи (D. M. Ritchie), изданную в Prentice-Hall в 1978  году.1

Будет использоваться библиотека стандартного ввода-вывода – набор  функций, обеспечивающих эффективный и переносимый ввод-вывод и системные сервисы для  программ  на  Си.  Библиотека стандартного ввода-вывода доступна на большинстве не-UNIX-систем, поддерживающих Си, так что программы, которые ограничивают взаимодействие с системой ее возможностями, легко переносимы.

Примеры, представленные в этой  главе, обладают общим свойством: все они  представляют собой  небольшие сервисные  программы, кото рые используются каждый день, но при  этом они не вошли в седьмую версию. Если   в  вашей  системе есть  подобные  программы,  полезно сравнить предложенную реализацию с уже имеющейся.

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

Источник: Керниган Б., Пайк Р., UNIX. Программное окружение. – Пер. с англ. – СПб: Символ-Плюс, 2003. – 416 с., ил.

По теме:

  • Комментарии