Используя только стандартный C++ (API не специфичный для платформы), я хотел бы запустить внешнее приложение, которое может завершиться немедленно или таймаутом. Если приложение приостанавливается, у моего приложения есть тайм-аут, после которого он просто завершает работу приложения и возобновляет его.Завершить один поток (который застрял) от другого
Теперь, вплоть до вшивый песчаный, я пытался запускать две темы:
- первый поток запускает приложение и ждет его завершения
- второй поток ожидает в течение нескольких секунд и проверяет, является ли первый поток завершен. Если это не так, то он считает это заторможенным.
Вопрос в том, как я могу завершить первый поток со второго? Способ запуска приложения - использовать функцию system(). Это синхронно, поэтому мне не нужно проверять этот поток, если я желаю прекращения. Его нужно каким-то образом изгнать из-за исключения извне.
Как это делается P.S правильно? 7
.: если это не представляется возможным, и я подозреваю, что это не так, то я просто не хочу ждать этого потока больше. Он может просто оставаться застопоренным в фоновом режиме. Как мне это достичь? (в настоящее время я жду эту нить с join()
)
Я был бы удивлен, если бы был переносной способ убить процесс, запущенный с помощью 'system()'. – NPE
Я не хочу убивать процесс. Просто поток, который запустил его. Это нормально для меня, потому что этот процесс редко останавливается. Поэтому в конце дня у меня было бы несколько процессов, но это не проблема. –
В явном абзаце явным образом просил указать способ завершения дочернего процесса. Что касается убийства потока, какую библиотеку потоков вы используете? C++ 11 'std :: thread' или что-то еще? – Useless