Все о моделировании в Компас-3D LT
   Главная Статьи Файлы Форум Ссылки Категории новостей
July 15 2025 19:51:13   
Навигация
Главная
Статьи
Файлы
FAQ
Форум
Ссылки
Категории новостей
Обратная связь
Фото галерея
Поиск
Разное
Карта Сайта
Популярные статьи
Что необходимо ... 65535
4.12.1 Професси... 35815
Учимся удалять!... 32635
Примеры, синони... 23928
Просмотр готовы... 23195
Декартовы коорд... 23096
FAST (методика ... 21943
содержание - се... 21280
Просмотр готовы... 20067
Работа с инстру... 15609
Сейчас на сайте
Гостей: 1
На сайте нет зарегистрированных пользователей

Пользователей: 9,955
новичок: Logyattella
Друзья сайта
Ramblers Top100
Рейтинг@Mail.ru

Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ по Delphi
Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog
10.3.4 Опрос терминала
Иногда удобно производить опрос устройства, то есть считывать с него данные, если они есть, или продолжать выполнять обычную работу — в противном случае. Программа на Рисунке 10.18 иллюстрирует этот случай: после открытия терминала с параметром "no delay" (без задержки) процессы, ведущие чтение с него, не приостановят свое выполнение в случае отсутствия данных, а вернут управление немедленно (см. алгоритм terminal_read, Рисунок 10.15). Этот метод работает также, если процесс следит за множеством устройств: он может открыть каждое устройство с параметром "no delay" и опросить всех из них, ожидая поступления информации с каждого. Однако, этот метод растрачивает вычислительные мощности системы.
#include ‹fcntl.h›
main() {
register int i, n;
int fd;
char buf[256] ;
/* открытие терминала только для чтения с опцией "no delay" */
if ((fd = open("/dev/tty", O_RDONLYO_NDELAY)) == -1) exit();
n = 1;
for(;;) { /* всегда */
for (i = 0; i ‹ n; i++);
if (read(fd, buf, sizeof(buf)) › 0) {
printf("чтение с номера %d\n", n);
n--;
}
else n++; /* ничего не прочитано; возврат вследствие "no delay" */
}
}
Рисунок 10.18. Опрос терминала
В системе BSD есть системная функция select, позволяющая производить опрос устройства. Синтаксис вызова этой функции:
select(nfds, rfds, wfds, efds, timeout)
где nfds — количество выбираемых дескрипторов файлов, а rfds, wfds и efds указывают на двоичные маски, которыми "выбирают" дескрипторы открытых файлов. То есть, бит 1 ‹‹ fd (сдвиг на 1 разряд влево значения дескриптора файла) соответствует установке на тот случай, если пользователю нужно выбрать этот дескриптор файла. Параметр timeout (тайм-аут) указывает, на какое время следует приостановить выполнение функции select, ожидая поступления данных, например; если данные поступают для любых дескрипторов и тайм-аут не закончился, select возвращает управление, указывая в двоичных масках, какие дескрипторы были выбраны. Например, если пользователь пожелал приостановиться до момента получения данных по дескрипторам 0, 1 или 2, параметр rfds укажет на двоичную маску 7; когда select возвратит управление, двоичная маска будет заменена маской, указывающей, по каким из дескрипторов имеются готовые данные. Двоичная маска wfds выполняет похожую функцию в отношении записи дескрипторов, а двоичная маска efds указывает на существование исключительных условий, связанных с конкретными дескрипторами, что бывает полезно при работе в сети.
Комментарии
Нет комментариев.
Добавить комментарий
Пожалуйста залогиньтесь для добавления комментария.
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Случайные статьи
1. Назначение отве...
3.6 ВЫВОДЫ
Эталонная модель в...
Производные данные
Нечеткий вывод
2.4 УПРАВЛЕНИЕ СИС...
5.12.4 Закрытие к...
3. Обзор концепции...
5.18 СОПРОВОЖДЕНИЕ...
Какую информацию с...
1.2 СТРУКТУРА СИСТЕМЫ
12.3.3.1 Выделени...
Рационален ли чел...
7.4.2. Организа...
2.4.7.1 Идея цикли...
содержание - сетев...
Конструкционные сп...
Общение
Подход Киберсо
5.17 АБСТРАКТНЫЕ О...
Релевантность
1.5.2 Уровни преры...
9.6. Межгрупповая ...
5.1 Архитектура со...
10.4.1 Более детал...
Глава 24. SD-501 S...
Амплитудная модуляция
Схемы подключения
Встроенная база да...
7.8 КОМАНДНЫЙ ПРОЦ...
Достоинства и недо...
4.12.3.5 Система с...
2.3.1. Аналоговые ...
3. Матричная струк...
ЦЕЛИ КАЖДОЙ ГРУ...
5.12.1 Системная ф...
Теперь о картах и ...
Инвертированный си...
Глава 8. Acer n35
3.2 СТРУКТУРА ОБЛ...
Мини-чат
Вам необходимо залогиниться.

Нет присланных сообщений.
Copyright © 2009