Брайан Керниган - UNIX — универсальная среда программирования

Тут можно читать онлайн Брайан Керниган - UNIX — универсальная среда программирования - бесплатно ознакомительный отрывок. Жанр: comp-osnet, издательство Финансы и статистика, год 1992. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    UNIX — универсальная среда программирования
  • Автор:
  • Жанр:
  • Издательство:
    Финансы и статистика
  • Год:
    1992
  • Город:
    Москва
  • ISBN:
    5-289-00253-4
  • Рейтинг:
    5/5. Голосов: 81
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 100
    • 1
    • 2
    • 3
    • 4
    • 5

Брайан Керниган - UNIX — универсальная среда программирования краткое содержание

UNIX — универсальная среда программирования - описание и краткое содержание, автор Брайан Керниган, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

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

Для программистов-пользователей операционной системы UNIX.

UNIX — универсальная среда программирования - читать онлайн бесплатно ознакомительный отрывок

UNIX — универсальная среда программирования - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Брайан Керниган
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Другая программа в цикле следит за содержимым вашего почтового ящика: как только оно изменяется, программа выдает сообщение: "You have a mail" ("У вас есть почта"). Такая программа является полезной альтернативой встроенному в интерпретатор механизму, использующему переменную MAIL. Чтобы показать другой стиль программирования, мы реализовали ее с помощью переменных интерпретатора, а не файлов:

$ cat checkmail

# checkmail: watch mailbox for growth

PATH=/bin:/usr/bin

MAIL=/usr/spool/mail/`getname` # system dependent

t=${1-60}

x="`ls -l $MAIL`"

while :

do

y="`ls -l $MAIL`"

echo $x $y

x="$y"

sleep $t

done | awk '$4 < $12 { print "You have mail" }'

$

Мы опять воспользовались awkпрограммой, на этот раз — чтобы добиться вывода сообщения только в тех случаях, когда почтовый ящик пополняется, а не просто изменяется. Иначе вы получите сообщение сразу после исключения письма. (Версия, встроенная в интерпретатор, имеет такой недостаток.)

Обычно интервал времени устанавливается равным 60 с, но если командная строка содержит параметр, например

$ chekmail 30

то интервал задается им. Переменная интерпретатора принимает в качестве значения заданное параметрами время или 60 с, если время не задано, с помощью присваивания

t=${1-60}

Это еще одна возможность языка shell. ${var}эквивалентно $varи может использоваться для преодоления трудностей, связанных с появлением переменных внутри буквенно-цифровых строк:

$ var=hello

$ varx=goodbye

$ echo $var

hello

$ echo ${var}x

hellox

$

Определенные символы внутри фигурных скобок задают специальную обработку переменной. В том случае, когда переменная не определена и за ее именем идет знак вопроса, выдается строка, следующая за символом ?, и интерпретатор прекращает работу (если только он не работает в диалоговом режиме). При отсутствии строки печатается стандартное сообщение:

$ echo ${var?}

hello все в порядке, var определено

$ echo ${junk}

junk: parameter not setстандартное сообщение

$ echo ${junk?error!}

junk: error! строка задана

$

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

В другой конструкции ${var-thing}выбирается $var, если оно определено, и thing — в противном случае. В подобной конструкции ${var-thing}значение $varтакже устанавливается равным thing:

$ echo ${junk-'Hi there'}

Hi there

$ echo ${junk?)

junk: parameter not setзначение junk не изменилось

$ echo {junk='Hi there'}

Hi there

$ echo ${junk?}

Hi there junk принял значение Hi there

$

Правила получения значений переменных приведены в табл. 5.3. Возвращаясь к нашему исходному примеру

t=${1-60}

видим, что tприсваивается $1или 60, если аргумент не задан.

$var Значение var; ничего, если varне определено
${var} То же; полезно, если за именем переменной следует буквенно-цифровая строка
${var-thing} Значение var, если оно определено; в противном случае — thing; $varне изменяется
${var=thing} Значение var, если оно определено; в противном случае — thing. Если varне определено, то $varприсваивается thing
${var?строка} Если varопределено — $var; в противном случае выводится строка и интерпретатор прекращает работу. При пустой строке выводится: var: parameter not set
${var+thing} thing, если $varопределено; в противном случае — ничего

Таблица 5.3: Получение значений переменных в языке

Упражнение 5.9

Обратите внимание на реализацию команд trueи falseв /usr/binили /bin. (Как бы вы определили, где они находятся?)

Упражнение 5.10

Измените команду watchforтак, чтобы пользователь мог задавать несколько имен, а не вводить 'joe|mary'.

Упражнение 5.11

Напишите версию команды watchwho, которая использует команду commвместо awkдля сравнения новой и старой информации. Какая версия вам больше нравится?

Упражнение 5.12

Напишите версию команды watchwho, в которой вывод команды whoхранится в переменных языка shell, а не в файлах. Какая версия лучше? Какая версия быстрее работает? Следует ли в командах watchwhoи checkmailавтоматически использовать операцию &?

Упражнение 5.13

В чем состоит различие между пустой командой языка shell: и символом примечания #? Нужны ли они?

5.4 Команда trap: обработка прерываний

Если во время выполнения команды watchwhoнажать клавишу DEL ( УДЛ ) или отключить компьютер от сети, то один или несколько временных файлов останутся в каталоге /tmp. Команда watchwhoудаляет временные файлы перед окончанием своей работы. Необходимы средства обнаружения таких ситуаций и восстановления после прерывания.

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

В гл. 7 сигналы рассматриваются подробнее, но для работы с ними на языке shellглубоких знаний не требуется. Встроенная команда интерпретатора trapустанавливает последовательность команд, которая должна выполняться при возникновении сигнала:

trap последовательность_команд список_номеров_сигналов

Последовательность команд — единый аргумент, поэтому его почти всегда нужно брать в кавычки. Номера сигналов обозначаются небольшими целыми числами, например, 2 соответствует сигналу, возникающему при нажатии клавиши DEL , а 1 — сигналу, возникающему при отключении от сети. Номера сигналов, наиболее часто используемых в shell-программах, приведены в табл. 5.4.

0 Выход из интерпретатора (по любой причине, включая конец файла)
1 Отбой
2 Прерывание (клавиша DEL )
3 Останов ( ctl-\ ; вызывает распечатку содержимого памяти программы)
9 Уничтожение (нельзя перехватить или игнорировать)
15 Окончание выполнения; сигнал по умолчанию, производимый kill(1)

Таблица 5.4: Номера сигналов в интерпретаторе

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Брайан Керниган читать все книги автора по порядку

Брайан Керниган - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




UNIX — универсальная среда программирования отзывы


Отзывы читателей о книге UNIX — универсальная среда программирования, автор: Брайан Керниган. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x