Нейл Мэтью - Основы программирования в Linux
- Название:Основы программирования в Linux
- Автор:
- Жанр:
- Издательство:«БХВ-Петербург»
- Год:2009
- Город:Санкт-Петербург
- ISBN:978-5-9775-0289-4
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Нейл Мэтью - Основы программирования в Linux краткое содержание
В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стандартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым.
Для начинающих Linux-программистов
Основы программирования в Linux - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Команда printf
есть только в современных командных оболочках. Группа X/Open полагает, что ее следует применять вместо команды echo
для генерации форматированного вывода, несмотря на то, что, кажется, лишь немногие следуют этому совету.
У команды следующая синтаксическая запись.
printf "строка формата" параметр1 параметр2 ...
Строка формата очень похожа с некоторыми ограничениями на применяемую в языках программирования С и С++. Главным образом не поддерживаются числа с плавающей точкой, поскольку все арифметические операции в командной оболочке выполняются над целыми числами. Строка формата состоит из произвольной комбинации литеральных символов, escape-последовательностей и спецификаторов преобразования. Все символы строки формата, отличающиеся от \
и %
, отображаются на экране при выводе.
В табл. 2.7 приведены поддерживаемые командой escape-последовательности.
Таблица 2.7
Escape-последовательность | Описание |
---|---|
\" |
Двойная кавычка |
\\ |
Символ обратный слэш |
\a |
Звуковой сигнал тревоги (звонок колокольчика или прерывистый звуковой сигнал) |
\b |
Символ Backspace (стирание слева) |
\c |
Отбрасывание последующего вывода |
\f |
Символ Form feed (подача бумаги) |
\n |
Символ перехода на новую строку |
\r |
Возврат каретки |
\t |
Символ табуляции |
\v |
Символ вертикальной табуляции |
\ooo |
Один символ с восьмеричным значением ooo |
\xHH |
Один символ с шестнадцатеричным значением HH |
Спецификаторы преобразований довольно сложны, поэтому мы приведем наиболее распространенные варианты их применения. Более подробную информацию можно найти в интерактивном справочном руководстве командной оболочки bash или на страницах раздела 1 интерактивного руководства к команде printf
( man 1 printf
). (Если вы не найдете нужных сведений в разделе 1, попробуйте поискать в разделе 3.) Спецификатор преобразования состоит из символа %
, за которым следует символ преобразования. Основные варианты преобразований перечислены в табл. 2.8.
Таблица 2.8
Символ преобразования | Описание |
---|---|
D |
Вывод десятичного числа |
С |
Вывод символа |
S |
Вывод строки |
% |
Вывод знака % |
Строка формата используется для интерпретации остальных параметров команды и вывода результата, как показано в следующем примере:
$ printf "%s\n" hello
hello
$ printf "%s %d\t%s" "Hi There" 15 people
Hi There 15 people
Обратите внимание на то, что для защиты строки Hi There
и превращения ее в единый параметр, строку нужно заключить в кавычки ( ""
).
Команда return
служит для возврата значений из функций, как уже упоминалось ранее при обсуждении функций. Команда принимает один числовой параметр, который становится доступен в сценарии, вызывающем функцию. Если параметр не задан, команда return
по умолчанию возвращает код завершения последней команды.
Команда set
задает переменные-параметры командной оболочки. Она может быть полезна при использовании полей в командах, выводящих значения, разделенные пробелами.
Предположим, что вы хотите использовать в сценарии название текущего месяца. В системе есть команда date
, содержащая название месяца в виде строки, но нужно отделить его от других полей. Это можно сделать с помощью комбинации команды set
и конструкции $(...)
, которые обеспечат выполнение команды date
и возврат результата (более подробно об этом см. далее ). В выводе команды date строка с названием месяца — второй параметр.
#!/bin/sh
echo the date is $(date)
set $(date)
echo The month is $2
exit 0
Программа задает список параметров для вывода команды date
и затем использует позиционный параметр $2
для получения названия месяца.
Мы использовали команду date
только как простой пример, демонстрирующий, как извлекать позиционные параметры. Поскольку команда date
зависит от языковых параметров или локализации, в действительности мы бы извлекли название месяца командой date +%B
. У команды date
много других вариантов форматирования, более подробную информацию см. на страницах интерактивного справочного руководства к команде.
Команду set
можно также применять для передачи параметров командной оболочке и тем самым управления режимом ее работы. Наиболее часто используемый вариант команды set -х
, который заставляет сценарий выводить на экран трассировку выполняемой в данный момент команды. Мы обсудим команду set
и ее дополнительные опции позже в этой главе, когда будем рассматривать отладку программ.
Команда shift
сдвигает все переменные-параметры на одну позицию назад, так что параметр $2
становится параметром $1
, параметр $3
— $2
и т.д. Предыдущее значение параметра $1
отбрасывается, а значение параметра $0
остается неизменным. Если в вызове команды shift
задан числовой параметр, параметры сдвигаются на указанное количество позиций. Остальные переменные $*
, $@
и $#
также изменяются в связи с новой расстановкой переменных-параметров.
Команда shift
часто полезна при поочередном просмотре параметров, переданных в сценарий, и если вашему сценарию требуется 10 и более параметров, вам понадобится команда shift
для обращения к 10-му параметру и следующим за ним.
Например, вы можете просмотреть все позиционные параметры:
#!/bin/sh
while [ "$1" != "" ]; do
echo "$1"
shift
done
exit 0
Команда trap
применяется для задания действий, предпринимаемых при получении сигналов, которые подробно будут обсуждаться далее в этой книге. Обычное действие — удалить сценарий, когда он прерван. Исторически командные оболочки всегда использовали числа для обозначения сигналов, но в современных сценариях следует применять имена, которые берутся из файла signal.h директивы #include
с опущенным префиксом SIG
.Для того чтобы посмотреть номера сигналов и соответствующие им имена, можно ввести в командной строке команду trap -l
.
Для тех, кто не знаком с сигналами, это события, асинхронно посылаемые программе. Стандартно они обычно вызывают прекращение выполнения программы.
Читать дальшеИнтервал:
Закладка: