Время остановить процесс Linux с помощью SIGSTOP - PullRequest
1 голос
/ 01 июля 2011

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

Другими словами, каков наихудший случай, когда SIGSTOP останавливает другой процесс? Есть ли аналогичная задержка для SIGCONT?

Ответы [ 2 ]

4 голосов
/ 01 июля 2011

kill является асинхронным.Это означает, что время, которое требуется, вообще не ограничено.Например, если система сильно загружена, это займет больше времени.Нет предела, которая будет работать 100% времени, даже если целевой процесс в противном случае простаивает.

Вы должны разрабатывать свои приложения так, чтобы kill мог занять произвольно много времени;Вы не должны заботиться о том, сколько времени это займет.Если вы предоставите более подробную информацию о том, почему вы заботитесь, возможно, кто-то может дать вам советы, как это исправить.

3 голосов
/ 01 июля 2011

Наихудший случай для SIGSTOP - бесконечный (где бесконечный - до выключения системы) в случае процессов, которые застряли в непрерывном спящем режиме - обычно ожидая при io, который никогда не завершится, потому что что-то физически сломалось или что-то упало в пространстве ядра.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...