Название: Как в Qt 3.3.5 узнать работает прога или нет Отправлено: Garik от Апрель 28, 2006, 11:09 Мне необходимо дождаться завершения работы одной проги, как мне отследить что ее процесс завершен?
Название: Как в Qt 3.3.5 узнать работает прога или нет Отправлено: Grigory от Апрель 28, 2006, 14:55 а прогу ты сам запускаешь?
Название: Как в Qt 3.3.5 узнать работает прога или нет Отправлено: Garik от Апрель 28, 2006, 15:51 Существует одна программа, которая запускает с помощью QProcess вторую и закрывается. А вторая прога должна дождаться закрытия первой и только потом начать работать.
Название: Как в Qt 3.3.5 узнать работает прога или нет Отправлено: Sergeich от Май 02, 2006, 15:17 void QProcess::processExited () [signal]
добавлено спустя 6 минут: Пардон, сразу не разобрался что к чему. Номер с QProcess'ом не пройдет :( Можно в первую прогу впаять серверный сокет, а во второй законнектиться к первой. Когда соединение разорвется, можно начинать работу. Название: Как в Qt 3.3.5 узнать работает прога или нет Отправлено: Garik от Май 02, 2006, 17:31 Спасибо, попробую
Название: Как в Qt 3.3.5 узнать работает прога или нет Отправлено: pastor от Май 02, 2006, 20:55 Можешь попробывать так:
Код: bool applicationIsRunning() где first.exe это имя твоего первого приложения. Данную функия возвращает true - если процесс активен, false - в противном случае. Данный кусок вставишь во второе приложение. Название: Как в Qt 3.3.5 узнать работает прога или нет Отправлено: Sergeich от Май 02, 2006, 23:50 Ёханный!!! Давай сюда еще кусок кода для линуха и мака, и сообчество будет радо :)
добавлено спустя 3 минуты: А как получить сигнал о завершении процесса? Проверять все процессы по таймеру? Название: Как в Qt 3.3.5 узнать работает прога или нет Отправлено: alex0303 от Май 03, 2006, 01:06 Цитата: "Garik" Существует одна программа, которая запускает с помощью QProcess вторую и закрывается. А вторая прога должна дождаться закрытия первой и только потом начать работать. А зачем всё это? Или вторая прога всё же сначала что-то полезное делает, а уж потом ожидает завершения родителя. Иначе вполне можно запускать вторую прогу непосредственно перед выходом из первой. Название: Как в Qt 3.3.5 узнать работает прога или нет Отправлено: Steven_Orko от Май 03, 2006, 20:42 Вообще, насколько я знаю, в системе можно поставить глобальный именованный мютекс. Первая прога его блокирует, а потом, когда завершается, в момент возврата значения из main, освобождает. А вторая пытается заблокировать данный мютекс, обращаясь к нему по имени. Если последний заблокирован, то прога первая работает и нужно подождать, если свободен, значит, можно дальше работать. Код не приведу, т.к. на память пишу. Поройся в мануалах, найдешь 100%. Это лучший способ из всех, что здесь предлгали. Да, кстати, QSingleApplication, кажись, по тому же принципу работает. Посмотри его исходники.
Название: Как в Qt 3.3.5 узнать работает прога или нет Отправлено: pastor от Май 04, 2006, 13:00 2 Steven_Orko
Да, ты прав, кросовости с моём коде и близко нет :) , но тем не менее... пример рабочий. Отлавить завершение процесса можно как по таймеру, так и в цикле со слипом. Кому что ближе к телу :wink: Насчёт именованых мютексов, то врядли здесь кути поможет, нет в ней такой возможности (покрайней мере я не нашёл). ИМХО, прийдётся это реализовывать средствами ОС. А сама идея стоющая! 2 Garik Если тебя заинтересовало решение твоей проблемы через мютексы, могу выложить пример под винду. Название: Как в Qt 3.3.5 узнать работает прога или нет Отправлено: Steven_Orko от Май 04, 2006, 19:00 to pastor
Начет Qt ты прав. Там нет такой возможности. Но я точно знаю, что в Винде и Линукс есть. Если нужна кроссплатформенность, хотя зачем? )))то придется два файла таксать с классом. Ну, а так, чисто для Винды - мютексы только в путь... ))) |