У меня есть приложение для Linux, которое должно порождать дочерний процесс по запросу с помощью одной из функций exec ().
Если дочерний процесс не завершился до того, как пришло время его порождать, приложение должно уничтожить предыдущий экземпляр перед запуском нового.Он делает это с
kill(pid, SIGTERM);
Я сохраняю pid предыдущего экземпляра и использую
waitpid(pid, &status, WNOHANG)
, чтобы пожинать процесс.
Кажется, что иногда существует очень длительное временное окно (возможно, в сотни миллисекунд) между выполнением вызова kill и возможностью пожинать процесс с помощью waitpid.
Что может вызвать это?Я думал, что если дочерний процесс не установит сигнал (этот не делает), то он будет убит практически сразу.Это на ARM9 200 МГц, но все же ... мне кажется странным.