PDA

Показать полную графическую версию : дочерний процесс


DTF
31-08-2005, 07:00
Задача: Моя программа должна запускать дочерний процесс, а через некоторое(заранее определенное) время прибить его, если он не завершится сам.

Если пойти таким путем:
1. Запустить дочерний процесс и запомнить его id
2. Подождать
3. Если процесс с запомненным id присутствует в системе и текущая прграмма является его родителем, то
3.1 прибить его.

Вопрос: не может ли быть, что между шагами 3 и 3.1 дочерний процесс
завершится, а в системе запустится какой-то другой процесс с тем же самым id?

Если задачу можно сделать как-то по-другому, напишите, пожалуйста.

Операционные системы, в которых будет запускаться программа - Linux и Win32

SergeCpp
31-08-2005, 07:31
Если не освобождать его Handle,
то всегда можно будет проверить статус процесса — выполняется или нет

А потом можно и Terminate... Не забыв после этого освободить Handle

В MSDN есть все детали...

А можно на этом Handle и WaitTimeout сделать...
(можно и в отдельном потоке,
если не хотите приостанавливать основную программу)

P.S. Ваши опасения насчёт ID — верны!

P.P.S. А Handle — он Ваш — система его не может отнять...

P.P.P.S. Насчёт UNIX — не знаю...

XCodeR
31-08-2005, 10:27
юзаем CreateProcess + WaitTimeout(или любой другой таймер).

DTF
02-09-2005, 06:29
А в линукс как такое сделать?




© OSzone.net 2001-2012