kill
луг 0 не уничтожает pid 0. Вместо этого это - опция в kill
уничтожить все процессы в текущей группе. С Вашей командой Вы уничтожаете все в идентификаторе группы процесса (GID) оболочки, которая вышла kill
команда.
от kill
страница справочника:
pid... Specify the list of processes that kill should signal. Each pid
can be one of five things:
...
0 All processes in the current process group are signaled.
Согласно странице ручной страницы Sigpending
:
SigPending () Возвращает набор сигналов, которые находятся в ожидании доставки к вызывающему потоку (то есть сигналы, которые были подняты во время заблокирован).
Итак, подразумевается, что сигналы (SIGTERM, SIGKILL, SIGSTOP, ...), которые ждут, пока процесс не выйдет из d
(бесперебойное сон). Обычно процесс находится в этом состоянии, когда он ждет ввода / вывода. Этот сон не может быть прерван. Даже SIGKILL ( убить -9
) не может, и ядро ждет, пока процесс не просыпается (сигнал ожидается доставки для доставки).
Для других неясных значений я бы посмотрел в ручной странице пределов .Conf
.
Пределы процессов контролируют Setrlimit (2)
, чтобы вы могли посмотреть в свой ManPage:
RLIMIT_SIGPEND (поскольку Linux 2.6.8)
Указывает предел на номере сигналов, которые могут быть очередны для реального идентификатора пользователя процесса вызова. Как стандартные, так и сигналы в реальном времени считаются с целью проверки этого предела. Однако предел применяется только для SIGQUEUE (3); Всегда можно использовать убить (2), чтобы покинуть один экземпляр любого из сигналов, которые еще не очередны в процессе.
Как правило, вы можете получить наиболее подробную информацию, когда вы смотрите в ManPages Syscalls. C - родной язык Unix / Linux.