Оболочки управления заданиями постоянно управляют сеансами или группами процессов. Вы можете отправить один и тот же сигнал всем процессам в группе процессов с помощью одного вызова kill()
функции POSIX .
Стандарт POSIX гласит:
Если pid больше 0, sig должен быть отправлен процессу, идентификатор процесса которого равен pid.
Если pid равен 0, sig должен быть отправлен всем процессам (за исключением неопределенного набора системных процессов), чей идентификатор группы процессов равен идентификатору группы процессов отправителя и для которых процесс имеет разрешение на отправку сигнала.
Если pid равен -1, sig должен быть отправлен всем процессам (за исключением неопределенного набора системных процессов), для которых процесс имеет разрешение на отправку этого сигнала.
Если pid отрицательный, но не -1, sig должен быть отправлен всем процессам (за исключением неуказанного набора системных процессов), чей идентификатор группы процессов равен абсолютному значению pid, и для которых процесс имеет разрешение на отправку сигнала. .
Когда, например, оболочка входа завершается, сигнал SIGHUP отправляется всем программам в ее группе процессов.
Когда вы переводите программы на передний или задний план, вы используете группы процессов.
Есть также управляющие терминалы, о которых нужно беспокоиться; сигналы, генерируемые управляющим терминалом, могут быть отправлены всем программам в группе процессов.