Почему PGID моих дочерних процессов не совпадает с PID родительского процесса?

Почему PGID моих дочерних процессов не совпадает с PID родительского процесса?

Поэтому я постоянно читаю, что эта команда должна завершить все дочерние процессы родительского процесса:

kill -- -$$

Использование отрицательного идентификатора с командой kill ссылается на PGID, и из примеров, которые я видел, следует, что PGID дочерних процессов должен быть PID родительского процесса, но в моей системе это не так.

В моей системе PGID дочернего скрипта совпадает с PGID родительского скрипта, которым оказывается bash.

Что здесь происходит? Примеры неверны или моя система настроена по-другому?

Мне нужно завершить дочерние процессы, не завершая родительский процесс, чтобы не отправлять сигнал завершения в PGID, в котором находится родительский процесс.

решение1

Когда процесс разветвляется, он наследует свой PGID от своего родителя. PGID меняется, когда процесс становитсяруководитель группы процессов, то его PGID копируется из его PID. С этого момента новые дочерние процессы, которые он порождает, и их потомки наследуют этот PGID (если только они не начинают новые собственные группы процессов).

В оболочке с управлением заданиями, такой как большинство интерактивных оболочек, каждое задание помещается в свою собственную группу процессов. Если вы запускаете скрипт оболочки, процесс оболочки, запускающий скрипт, будет лидером группы, а PGID будет равен его PID.

В оболочке без управления заданиями, например в большинстве оболочек, используемых для запуска скриптов, команды выполняются в группе процессов оболочки.

Синтаксис kill -- -Nубивает все процессы в группе с PGID = N. Вы не можете использовать его с произвольным PID, только с PID лидера группы процессов, поскольку это PGID. По сути, это то, как работает оболочка

kill %jobid

синтаксис работает — он внутренне преобразуется %jobidв PGID задания и отправляет сигнал на этот PGID.

Нет простого способа запустить скрипт в его собственной группе процессов из другого скрипта оболочки. СмотритеКак установить группу процессов скрипта оболочкихотя бы для некоторых предложений.

Связанный контент