O Torvalds Linus

Сайт о *nix системах и всем что с ними связано

Функция do_group_exit()

Mar-24-2012 By root

Функция do group exit о уничтожает все процессы, принадлежащие к группе потоков процесса current. Она принимает в качестве параметра код завершения процесса, который представляет собой либо значение, указанное в системном вызове exit group () (нормальное завершение), либо код ошибки, переданный ядром (аварийное завершение). Функция выполняет следующие действия:

1. Проверяет, установлен ли флаг signal group exit у завершающегося процесса, т. е. приступило ли уже ядро к процедуре завершения данной группы потоков. В этом случае функция считает кодом завершения значение, хранящееся в поле current ->signal ->group_exit_code.
2. В противном случае функция устанавливает у процесса флаг signal_
group exit и сохраняет код завершения в поле current ->signai -> g гoup_ex i t_c ode.
3. Вызывает функцию zap other threads (), чтобы уничтожить остальные процессы в группе процесса current, если таковые имеются. С этой целью функция перебирает список идентификаторов процессов в хеш – таблице PIDTYPE TGID, определяемой полем current ->tgid. Каждому процессу в списке, отличному от current, она посылает сигнал sigkill. В результате, все эти процессы, в конце концов, выполнят функцию do exit () И будут уничтожены.
4. Вызывает функцию do exit (), передавая ей код завершения процесса. Как мы скоро увидим, функция do exit () уничтожает процесс и не возвращает управление.

Add A Comment