Нейл Мэтью - Основы программирования в 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. В противном случае он вернет количество прочитанных символов.
Интервал:
Закладка: