Команда Unix Timeout также убивает каких-либо дочерних элементов процесса? - PullRequest
0 голосов
/ 11 сентября 2018

Инструкция для команды 'timeout' создает впечатление, что она убивает дочерние процессы, если она не используется с параметром --forground, но я не могу найти какое-либо явное определение того, какэто ведет себя.

Команда timeout также уничтожает дочерние процессы / группы процессов любой команды, используемой с ней?

1 Ответ

0 голосов
/ 11 сентября 2018

Версия GNU coreutils timeout может просматривать ее реализацию здесь .

То, будет ли группа процессов создана (и уничтожена в целом), действительно зависит от того, --foreground пропущено, как вы поняли из документации.


Чтобы быть немного более точным:

  • Когда --foreground является не используетсямы вызываем setpgid() для создания новой группы процессов, помещая в нее и саму команду timeout, и вызванную команду.Когда истекает время ожидания, kill() передается 0 в качестве PID для уничтожения, указывая, что должна быть нацелена вся группа процессов.
  • Когда --foreground используется , используется тольконемедленно сообщается PID, а не другие члены группы процессов.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...