ожидаемая продолжительность между убийством и возможностью пожинать с помощью waitpid - PullRequest
2 голосов
/ 21 июля 2011

У меня есть приложение для Linux, которое должно порождать дочерний процесс по запросу с помощью одной из функций exec ().

Если дочерний процесс не завершился до того, как пришло время его порождать, приложение должно уничтожить предыдущий экземпляр перед запуском нового.Он делает это с

kill(pid, SIGTERM);

Я сохраняю pid предыдущего экземпляра и использую

waitpid(pid, &status, WNOHANG)

, чтобы пожинать процесс.

Кажется, что иногда существует очень длительное временное окно (возможно, в сотни миллисекунд) между выполнением вызова kill и возможностью пожинать процесс с помощью waitpid.

Что может вызвать это?Я думал, что если дочерний процесс не установит сигнал (этот не делает), то он будет убит практически сразу.Это на ARM9 200 МГц, но все же ... мне кажется странным.

1 Ответ

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

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

Даже если этого не произойдет, вы не знаете, сколько времени потребуется для завершения работы ОСпроцесс.

Попытка полагаться на такие вещи - это глупое поручение.

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