Группа процессов - это набор связанных процессов, о которых можно сигнализировать одновременно.
Сессия представляет собой набор групп процессов, которые либо прикреплены к одному оконечному устройству (известному как управляющий терминал ) или не присоединены к любому терминалу.
Сеансы используются для управления заданиями: одна из групп процессов в сеансе является группой процессов переднего плана и может отправлять сигналы с помощью управляющих символов терминала. Вы можете думать о сеансе с управляющим терминалом как о «входе в систему» на этом терминале. (Демоны обычно отключаются от любого управляющего терминала, создавая новый сеанс без такового.)
например, если вы запускаете some_app
оболочку, оболочка создает для нее новую группу процессов и делает ее основной группой процессов сеанса. ( some_app
Может создать несколько дочерних процессов, по умолчанию они будут частью той же самой группе процесса.) Если затем нажмите ^Z
, some_app
«s группа процесса сигнализируется , чтобы остановить его; и группа процессов оболочки снова переключается на группу процессов переднего плана. Затем, например, bg %1
снова запустит some_app
группу процессов, но продолжит работу в фоновом режиме.
Стандарт POSIX.1-2008 довольно читабелен (по крайней мере, я так думаю!) - взгляните на определения и соответствующие разделы главы «Общий интерфейс терминала» .
terminal
иterminal device
то же и упоминается в документе?Оболочки управления заданиями постоянно управляют сеансами или группами процессов. Вы можете отправить один и тот же сигнал всем процессам в группе процессов с помощью одного вызова
kill()
функции POSIX .Стандарт POSIX гласит:
Когда, например, оболочка входа завершается, сигнал SIGHUP отправляется всем программам в ее группе процессов.
Когда вы переводите программы на передний или задний план, вы используете группы процессов.
Есть также управляющие терминалы, о которых нужно беспокоиться; сигналы, генерируемые управляющим терминалом, могут быть отправлены всем программам в группе процессов.
источник