МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах
РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ" ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах Гендерна антидискримінаційна експертиза може зробити нас моральними рабами ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів
Контакти
Тлумачний словник Авто Автоматизація Архітектура Астрономія Аудит Біологія Будівництво Бухгалтерія Винахідництво Виробництво Військова справа Генетика Географія Геологія Господарство Держава Дім Екологія Економетрика Економіка Електроніка Журналістика та ЗМІ Зв'язок Іноземні мови Інформатика Історія Комп'ютери Креслення Кулінарія Культура Лексикологія Література Логіка Маркетинг Математика Машинобудування Медицина Менеджмент Метали і Зварювання Механіка Мистецтво Музика Населення Освіта Охорона безпеки життя Охорона Праці Педагогіка Політика Право Програмування Промисловість Психологія Радіо Регилия Соціологія Спорт Стандартизація Технології Торгівля Туризм Фізика Фізіологія Філософія Фінанси Хімія Юриспунденкция |
|
|||||||
Програмне керування терміналомНаперед визначені файлові дескриптори Керуючий термінал процесу Процес в UNIX-системі може мати керуючий термінал (controlling terminal), з якого отримуватиме сигнали від клавіатури (SIGINT у разі натискання користувачем Ctrl+C,SIGQUIT - Ctri-D).Звичайно це термінал, із якого ввійшов у систему користувач, що створив такий процес. Для процесу доступний файл /dev/tty,що відповідає цьому терміналу. Далі в розділі ознайомимося із деякими додатковими особливостями взаємодії між процесами і керуючими терміналами.
Відкривати щоразу файл керуючого термінала під час введення-виведення не дуже зручно. Розглянемо засоби, які надають ОС для спрощення роботи із таким терміналом. Під час створення нового процесу у його таблиці файлових дескрипторів fd заздалегідь створюють три елементи, котрі використовують як наперед визначені файлові дескриптори. Вони відповідають трьом заздалегідь відкритим файлам, доступним для кожного процесу і за замовчуванням пов'язаних із керуючим терміналом користувача, що створив цей процес:
· stdin - файл стандартного вводу (йому відповідає дескриптор fd[0]); · stdout - файл стандартного виводу (йому відповідає fd[l]); · stderr - файл повідомлень про помилки (йому відповідає fd[2]).
Виклик write(1. ...) або write(2. ...) означає виведення на відповідний термінал, read(0. ...) - введення із клавіатури, пов'язаної із цим терміналом. Таку концепцію сьогодні використовують і в інших ОС, які підтримують термінальне введення-виведення. Для можливості перенесення, замість чисел 0, 1 і 2, рекомендують вживати константи STDIN_FILENO, STD0UT_FILEN0 і STDERR_FILENO:
int bytes_read; char buf[1024]; // зчитати дані з файла стандартного вводу bytes_read = read(STDIN_FILENO, buf,sizeof(buf)); // вивести їх же у файл стандартного виводу wrіte(STDOUT_FILENO, buf, Bytes_read): Є багато прикладних і системних програм, які розраховані на отримання даних з файла стандартного вводу і відображення результатів у файл стандартного виводу. Такі програми називають фільтрами. Серед найвідоміших фільтрів можна виділити sort (сортування файла стандартного вводу, записування результату на стандартний вивід) і дгер (пошук заданого підрядка у стандартному вводі, записування рядків, де знайдено цей підрядок, на стандартний вивід).
Стандарт POSIX визначає набір системних викликів для керування режимами роботи із терміналом. Для задания атрибутів режиму термінального введення-виведення використовують системний виклик tcsetattr( ),а для отримання поточних атрибутів режиму – tcgetattr( ).Обидва ці виклики приймають параметром покажчик на структуру termios,яка містить зокрема поле с_ lflag— маску прапорців режимів, що керують поведінкою термінала (прапорець ECHOозначає роботу в режимі луни):
int tcgetattr(int tfd, struct termios *modes); int tcsetattr(int tfd, int actions, struct termios *modes): де: tfd— дескриптор файла, що відповідає терміналу;
actions— час встановлення режиму (TCSAN0W - негайно).
Наведемо приклади використання цих викликів для відключення режиму луни і відновлення попереднього режиму. #include <termios.h> #include <sys/types.h> struct termios new_mode, old_mode; // одержання поточного режиму tcgetattr(STDIN_FILENO,&old_mode); new_mode = old_mode; // відключення режиму луни new_mode.с_lflag &= (~ECHO); tcsetattr (STDI N_FILENO, TCSANOW, &new_mode); // ... введення-виведення з використанням STDIN_FILENO без луни // відновлення попереднього режиму tcsetattr(STDIN_FIL ENO,TCSANOW,&old jnode); 3. Основним для термінального введення-виведення у Win32 є поняття консолі . Воно відрізняється від визначеного раніше; фактично консоль - це наданий ОС спеціальний емулятор термінала. Звичайно консоль пов'язують із конкретним процесом. Для процесів, які запускає ОС, консолі пов'язують із консольними процесами, точкою входу для яких є функція main( ).Під час виклику CreateProcess( )виділення окремої консолі для процесу задається вмиканням прапорця створення CREATE_NEW_CONSOLE.Крім того, кілька процесів можуть спільно використовувати одну й ту саму консоль (наприклад, після виклику CreateProcess( )новий процес за замовчуванням успадковує консоль предка). Логічна структура консолі аналогічна до наведеної на рис. 17.1, за винятком того, що з нею може бути пов'язано кілька буферів виводу. Можна виводити дані у різні буфери, а потім перемикатися між ними. Для роботи із консоллю є два набори функцій. Функції високого рівня дають змогу працювати зі стандартними вводом та виводом і визначати деякі режими керування консоллю. Функції низького рівня дають можливість застосуванням отримувати повну інформацію про інтерактивну роботу користувача із клавіатурою і мишею. У більшості випадків застосуванню достатньо функцій високого рівня; прикладом застосування, розробленого із використанням функцій низького рівня, є файловий менеджер far. Читайте також:
|
||||||||
|