Нейл Мэтью - Основы программирования в Linux
- Название:Основы программирования в Linux
- Автор:
- Жанр:
- Издательство:«БХВ-Петербург»
- Год:2009
- Город:Санкт-Петербург
- ISBN:978-5-9775-0289-4
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Нейл Мэтью - Основы программирования в Linux краткое содержание
В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стандартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым.
Для начинающих Linux-программистов
Основы программирования в Linux - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
□
CLOCAL
— игнорирует управление линиями с помощью модема;
□
CREAD
— включает прием символов;
□
CS5
— использует пять битов в отправляемых и принимаемых символах;
□
CS6
— использует шесть битов в отправляемых и принимаемых символах;
□
CS7
— использует семь битов в отправляемых и принимаемых символах;
□
CS8
— использует восемь битов в отправляемых и принимаемых символах;
□
CSTOPB
— устанавливает два стоповых бита вместо одного;
□
HUPCL
— выключает управление линиями модема при закрытии;
□
PARENB
— включает генерацию и проверку четности;
□
PARODD
— применяет контроль нечетности вместо контроля четности.
Примечание
Если драйвер терминала обнаруживает, что последний дескриптор файла, ссылающийся на терминал, закрыт и при этом флаг
HUPCL
установлен, он устанавливает линии управления модема в состояние останова (hang-up).
Режимы управления применяются в основном при подключении к модему последовательной линии связи, хотя их можно использовать и при диалоге с терминалом. Обычно легче изменить настройку терминала, чем изменять стандартное поведение линий связи с помощью режимов управления структуры
termios
.
Локальные режимы
Эти режимы управляют разнообразными характеристиками терминала. Вы можете задать локальный режим, устанавливая флаги элемента
c_iflag
структуры termios
с помощью следующих макросов:
□
ECHO
— включает локальное отображение вводимых символов;
□
ECHOE
— выполняет комбинацию Backspace
, Space
, Backspace
при получении символа ERASE
(стереть);
□
ECHOK
— стирает строку при получении символа KILL
;
□
ECHONL
— отображает символы перехода на новую строку;
□
ICANON
— включает стандартную обработку ввода (см. текст, следующий за данным перечнем);
□
IEXTEN
— включает функции, зависящие от реализации;
□
ISIG
— включает генерацию сигналов;
□
NOFLSH
— отключает немедленную запись очередей;
□
TOSTOP
— посылает сигнал фоновым процессам при попытке записи.
Два самых важных флага в этой группе —
ECHO
, позволяющий подавлять отображение вводимых символов, и ICANON
, переключающий терминал в один из двух различных режимов обработки принимаемых символов. Если установлен флаг ICANON
, говорится, что строка в каноническом режиме, если нет, то строка в неканоническом режиме.
Специальные управляющие символы
Специальные управляющие символы — это коллекция символов подобных символам от комбинации клавиш +, действующих особым образом, когда пользователь вводит их. В элементе
c_cc
структуры termios
содержатся символы, отображенные на поддерживаемые функции. Позиция каждого символа (его номер в массиве) определяется макросом, других ограничений для управляющих символов не задано.
Массив
c_cc
используется двумя очень разными способами, зависящими от того, установлен для терминала канонический режим (т.е. установлен флаг ICANON
в элементе c_lflag
структуры termios
) или нет.
Важно понять, что в двух разных режимах есть некоторое взаимное наложение при применении номеров элементов массива. По этой причине никогда не следует смешивать значения для этих двух режимов.
Для канонического режима применяются следующие индексы:
□
VEOF
— символ EOF
;
□
VEOL
— дополнительный символ конца строки EOL
;
□
VERASE
— символ ERASE
;
□
VINTR
— символ прерывания INTR
;
□
VKILL
— символ уничтожения KILL
;
□
VQUIT
— символ завершения QUIT
;
□
VSUSP
— символ приостанова SUSP
;
□
VSTART
— символ запуска START
;
□
VSTOP
— символ останова STOP
.
Для канонического режима применяются следующие индексы:
□
VINTR
— символ INTR
;
□
VMIN
— минимальное значение MIN
;
□
VQUIT
— символ QUIT
;
□
VSUSP
— символ SUSP
;
□
VTIME
— время ожидания TIME
;
□
VSTART
— символ START
;
□
VSTOP
— символ STOP
.
Символы
Поскольку для более сложной обработки вводимых символов специальные символы и неканонические значения очень важны, мы описываем их в табл. 5.1.
Таблица 5.1
Символ | Описание |
---|---|
INTR |
Заставляет драйвер терминала отправить сигнал SIGINT процессам, подключенным к терминалу. Мы обсудим сигналы более подробно в главе 11 |
QUIT |
Заставляет драйвер терминала отправить сигнал SIGQUIT процессам, подключенным к терминалу |
ERASE |
Заставляет драйвер терминала удалить последний символ в строке |
KILL |
Заставляет драйвер терминала удалить всю строку |
EOF |
Заставляет драйвер терминала передать все символы строки во ввод, считываемый приложением. Если строка пустая, вызов read вернет ноль символов, как будто он встретил на конец файла |
EOL |
Действует как ограничитель строки в дополнение к более привычному символу перехода на новую строку |
SUSP |
Заставляет драйвер терминала послать сигнал SIGSUSP процессам, подключенным к терминалу. Если ваша система UNIX поддерживает управление заданиями, текущее приложение будет приостановлено |
STOP |
Действует как "прерыватель потока", т. е. прекращает дальнейший вывод на терминал. Применяется для поддержки управления потоком XON/XOFF и обычно задается как ASCII-символ XOFF (+) |
START |
Возобновляет вывод после символа STOP , часто ASCII-символ XON |
Значения TIME и MIN
Значения
TIME
и MIN
применяются только в неканоническом режиме и действуют вместе для управления считыванием входных данных. Вместе они управляют действиями при попытке программы прочесть дескриптор файла, ассоциированный с терминалом.
Возможны четыре варианта.
□
MIN = 0
и TIME = 0
. В этом случае вызов read
всегда завершается сразу же. Если какие-то символы доступны, они будут возвращены, если нет, то read
вернет ноль, и никакие символы не будут считаны.
□
MIN = 0
и TIME > 0
. В этом случае вызов read
завершится, когда все доступные символы будут считаны или когда пройдет TIME
десятых долей секунды. Если нет прочитанных символов из-за превышения отпущенного времени, read
вернет 0. В противном случае он вернет количество прочитанных символов.
Интервал:
Закладка: