Cleric
Янв. 24, 2009 03:36:35
Из скрипта с помощью os.execl запускается программа, так как эта она часто вылетает сразу после запуска (появляется стандартное виндовое окно с информацией об ошибке), приходится через некоторое время проверять, не зависла ли она, и если это так, перезапустить.
Вопроса два, осуществима ли в принципе проверка на зависание процесса в винде?
Если да, то примерное направление, в котором стоит копать?
bw
Янв. 24, 2009 04:04:10
Твой приложение? Пингуй. Сотню вариантов можно придумать. Пусть она с интервалом пишет что-нибудь в stdout, а ты наблюдай за её выходом и делай соответствующий выводы, если долго ничего нет (для win должно быть консольным). Если у приложения есть оконные объекты (win, с др. не работал), можно попробовать через соответствующую систему сообщений определить, жива ли собака.
..bw
Cleric
Янв. 24, 2009 05:03:46
приложение не моё
igor.kaist
Янв. 24, 2009 08:47:12
Можно посылать сообщения окну, и если программа не отвечает (зависла), в титле (черт, забыл как это будет по русски), к имени программы добавится “(не отвечает)”, что отследить можно.
pyuser
Янв. 25, 2009 03:45:52
Посмотрите ветку
http://python.su/forum/viewtopic.php?id=2599 (пост 9), там реализован примитивный контроль зависания приложения.
Хотя, если я Вас правильно понял, зависания нет, произошла ошибка и приложение ждет Вашей реакции, т.е. все работает :)
Cleric
Янв. 25, 2009 06:06:37
pyuser, вы меня правильно поняли, изменяюсь за дезинформацию
к сожалению контроль зависания в функции TerminateApplication не подходит, именно из-за того что мне нужен не контроль зависания, а определение вылета программы (окошко с системным сообщением). И вообще возможно ли определить что приложение вылетело?
bw
Янв. 25, 2009 07:08:18
Опять диза.
Это не “вылет”, что за слово вообще. Приложение, с точки зрения системы, работает. Отслеживай окна приложения с некоторым интервалом. При появлении “нужного” реагируй, например снятием приложения. Определить можно по заголовку, к примеру. Всё это не имеет непосредственного отношения к Python, читай winapi, ну и, на специализированных форумах тебе помогут больше.
..bw