Читаем Разработка приложений в среде Linux. Второе издание полностью

0x40075d88 in sigsuspend()

Далее можно устанавливать точки прерывания и слежения, пошагово выполнять программу и так далее.

<p>16.5. Справочник по <code>termios</code></p>

Интерфейс termios состоит из структуры, набора функций, оперирующих с нею, и множества флагов, которые можно лично устанавливать.

#include

struct termios {

 tcflag_t c_iflag; /* флаги режима ввода */

 tcflag_t c_oflag; /* флаги режима вывода */

 tcflag_t c_cflag; /* флаги управляющего режима */ tcflag_t c_lflag; /* флаги локального режима */

 cc_t c_line; /* дисциплина линии связи */

 cc_t c_cc[NCCS]; /* управляющие символы */

};

Элемент c_line используется лишь в системных специфических приложениях[112], выходящих за рамки материала данной книги. Однако остальные пять элементов имеют отношение почти ко всем ситуациям, требующим манипулирования настройками терминала.

<p>16.5.1. Функции</p>

Интерфейс termios определяет несколько функций. Все они объявлены в . Четыре из них являются обслуживающими функциями для переносимого манипулирования структурой struct termios; остальные представляют собой системные вызовы. Функции, начинающиеся с cf, являются обслуживающими, а функции, начинающиеся с tc — системными вызовами управления терминалом. Все системные вызовы управления терминалом генерируют SIGTTOU, если процесс в данный момент работает в фоне и пытается манипулировать своим управляющим терминалом (см. главу 15).

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

int tcgetattr(int fd, struct termios * t);

Восстанавливает текущие настройки файлового дескриптора fd и помещает их в структуру, на которую указывает t.

int tcsetattr(int fd, int options, struct termios * t);

Устанавливает текущие настройки терминала для файлового дескриптора fd в настройки, приведенные в t. Всегда используйте tcgetattr() для заполнения t, затем модифицируйте его. Никогда не заполняйте t вручную: некоторые системы требуют установки или снятия флагов, кроме флагов, определенных POSIX, поэтому заполнение вручную является непереносимым.

Аргумент options определяет, когда изменения вступают в силу.

TCSANOWИзменение немедленно вступает в силу.
TCSADRAINИзменение вступает в силу после того, как передаются все входные данные, уже записанные в fd; перед вступлением в силу оно очищает очередь. Необходимо использовать это при смене выходных параметров.
TCSAFLUSHИзменение вступает в силу после того, как выходная очередь была очищена; входная же очередь отбрасывается перед вступлением изменений в силу.

Если система не может обработать некоторые настройки, например, скорость передачи данных, ей разрешается игнорировать их без выдачи сообщения об ошибке. Единственный способ, с помощью которого можно узнать, были ли приняты настройки — вызвать tcgetattr() и сравнить содержимое возвращаемой им структуры с содержимым структуры, переданной tcsetattr().

Поэтому более переносимые приложения используют код вроде показанного ниже.

#include

struct termios save;

struct termios set;

struct termios new;

int fd;

...

tcgetattr(fd, &save);

set = save;

cfsetospeed(&set, B2400);

cfsetispeed(&set, B2400);

tcsetattr(fd, &set);

tcgetattr(fd, &new);

if ((cfgetospeed(&set) != B2400) ||

 (cfgetispeed(&set) != B2400)) {

 /* объяснение */

}

Обратите внимание, что если не имеет значения, "зависнет" ли настройка termios, лучше проигнорировать это условие, как делается в robin.

speed_t cfgetospeed(struct termios * t);

speed_t cfgetispeed(struct termios * t);

Извлекает скорость, соответственно, вывода или ввода из t. Эти функции возвращают символическую скорость, такую же, которая дается cfsetospeed() и cfsetispeed().

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных