В операционной системе SVR3 (и более ранних версиях ОС компании AT&T) группы процессов показывают характеристики сеанса входа в систему терминала. Технология доступа с терминала в SVR3 проиллюстрирована
Также может иметь смысл заглянуть на сайт mr-glushitel.ru, ведь именно там можно узнать много нового на тему http://mr-glushitel.ru/index.php/ustanovka-plamegasitelya. Тема установка пламегасителей может показаться на первый взгляд незначительной и даже не тематичной. Но стоит посетить сайт mr-glushitel.ru, и тема установка пламегасителей начинает проявлять себя с неожиданной стороны и вызывает всё больший интерес. Дело в том, что тема установка пламегасителей очень подробно представлена на сайте mr-glushitel.ru. Трудно найти более детальное освещение темы установка пламегасителей чем это сделано на сайте mr-glushitel.ru. Спасибо сайту mr-glushitel.ru за такое доскональное преподнесение темы установка пламегасителей.
Ниже перечислены ее основные характеристики.
Группы процессов. Каждый процесс во время создания вызовом fork наследует идентификатор группы от своего родителя. Единственный способ изменения группы процесса заключается в вызове setgrp, который переустанавливает группу делающего этот вызов процесса на значение, равное его PID. Таким образом, процесс становится лидером новой группы. Все потомки этого процесса, созданные при помощи fork, присоединятся к его группе.
Управляющий терминал. Терминал принадлежит своей управляющей группе. То есть если процесс создает новую группу, то он теряет свой управляющий терминал. После этого первый терминал, им открываемый (который еще не является управляющим), становится его управляющим терминалом. Значение поля t_pgrp структуры tty для этого терминала установится в значение поля p_pgrp структуры ргос процесса. Все потомки процесса наследуют управляющий терминал от своего лидера. Не может существовать две группы процессов с одним управляющим терминалом.
Типичный сценарий работы. Процесс init порождает процесс-потомок для каждого терминала, описанного в файле /etc/inittab. Потомок вызывает setgrp, становясь в результате этого лидером группы, после чего при помощи ехес запускает программу getty, которая выводит приглашение на вход в систему и ждет ввода. Когда пользователь вводит свое регистрационное имя, программа getty посредством ехес запускает программу login, которая запрашивает и верифицирует пароль, и затем стартует командный интерпретатор, назначенный1 при входе в систему. Таким образом, командный интерпретатор, запускаемый при входе в систему, является прямым потомком процесса і nit и лидером группы процессов. Обычно остальные процессы не создают собственных групп (исключение составляют системные демоны, запускаемые из сеанса входа в систему), — следовательно, все процессы, относящиеся к сеансу входа в систему, относятся к одной группе.
Доступ к терминалу. Не поддерживает управление заданиями. Все процессы, имеющие открытый терминал, обладают одинаковыми правами доступа к нему независимо от того, являются ли они фоновыми или интерактивными. Вывод таких процессов может производиться на терминал вперемежку. Если несколько процессов попытаются прочесть данные с терминала одновременно, то может оказаться неочевидным, какой из них «перехватит» ту или иную строку ввода.
Сигналы терминала. Такие сигналы, как SIGQUIT или SIGINT, создаваемые при нажатии определенных клавиш клавиатуры, посылаются всем процессам управляющей группы терминала, то есть обычно всем процессам сеанса входа в систему. Однако такие сигналы в большинстве случаев необходимы только интерактивным процессам. Поэтому командный интерпретатор при создании фонового процесса устанавливает для него игнорирование таких сигналов. Он также перенаправляет стандартный ввод таких процессов в /dev/null, что не позволяет им читать данные с терминала через его дескриптор (чтобы начать чтение с терминала, процесс может открыть другие дескрипторы).
Отсоединение от терминала. Терминал отсоединяется от его управляющей группы при установке поля t_pgrp своей структуры tty в ноль. Такое происходит, если ни один из процессов не связан более с данным терминалом или когда лидер группы завершает работу (обычно процесс, порождаемый при в входе в систему с данного терминала).
Завершение работы лидера группы. Лидер группы становится управляющим процессом своего терминала и отвечает за управление терминалом для всей группы. Когда лидер завершает работу, его управляющий терминал отсоединяется от группы (поле t_pgrp сбрасывается в ноль). Более того, всем остальным процессам группы оправляется сигнал SIGHUP, и значения их полей p_pgrp также сбрасываются в ноль, после чего эти процессы1 больше не относятся ни к одной группе (становясь тем самым осиротевшими).
Реализация. Поле p_pgrp структуры ргос содержит идентификатор группы процессов. Область и имеет два поля, относящиеся к терминалу: u_ttyp (указатель на структуру tty управляющего терминала) и u_ttyd (номер устройства управляющего терминала). Поле t_pgrp структуры tty содержит идентификатор группы процессов, управляющей терминалом.
Опубликовал katy
July 06 2015 15:59:05 ·
0 Комментариев ·
2878 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.