[WinXP] Как убить подвисающее приложение при общем торможении системы?

durka82

Бывает, что приложение начинает вести себя так, что забивает управление (оно практически не реагирует) и проще оказывается сделать хард-резет.
Да и с играми такое бывает.
В общем случае я так понимаю задача не решается, но вот если заранее известно "плохое" приложение, то можно сделать, чтобы например оно убивалось через минуту подвисания?
Ну или чтобы можно было настроить комбинацию клавиш (даже на кратковременное нажатие кнопки Выключения питания) на убивание текущего приложения?
В крайнем случае, чтобы такое можно было провернуть по сети (если она конечно первая и не отвалится).
п.с.: Вот интересно, а у 7-ки как с этим? Или чуда не случилось (всё-таки в нормальной оси у приложения не должно быть ни единого шанса повесить систему)?

Andbar

для таких случаев у меня всегда в памяти загружен prkiller. Работает с realtime-приоритетом (т.е., даже выше чем у taskmgr выставляется имеет мелкое быстро рисующееся окно (правда, при realtime-приоритете это не имеет значение которое можно вызвать по хоткею, добавляет последние запущенные процессы вверх списка, не задаёт лишних вопросов перед убийством процесса.

elenangel

<win><r> taskkill /f /im первые_буквы_имени_исполняемого_файла* <enter>
либо включи службу telnet и заходи по сети и то же самое делай

elenangel

чтобы например оно убивалось через минуту подвисания?
напиши своего демона - "кнопку бдительности" типа если раз в минуту не нажмешь Shift-Ctrl-ScrlLock то убивается известное приложения. правда запарит нажимать =)

Andbar

<win><r> taskkill /f /im первые_буквы_имени_исполняемого_файла* <enter>
запаришься набирать. Быстрее будет cmd запустить (а консоль, как правило, не тормозит).

elenangel

ага, вот только как ты консоль запустишь? опять же через win-r cmd enter. и она при сильном торможении еще полчаса рисоваться будет
проще уж вместо консоли сразу команду-убийцу писать - пропускаем одну промежуточную стадию

schipuchka1

вот чем мне нравится 2k и 2k3 - это тем, что снять такое в них значительно легче вне зависимости от.
а ещё могу посоветовать запускать с пониженным приоритетом опасные программы. вот так:
start /low программа

Dimon89

<win><r> taskkill /f /im первые_буквы_имени_исполняемого_файла* <enter>
Я с таким периодически сталкиваюсь при отладке многопотоковых приложений. Среда разработки при этом так подвешивает систему, что даже диспетчер задач вызвать крайне нетривиально, не говоря уж о Win-R

Filan

Выставляй минимальный приоритет и никакие дополнительные утилитки не нужны будут.

Andbar

консоль всё равно откроется. Кроме того, под виндой консоль рисует не приложение, которое в неё вывод осуществляет, а системный процесс, поэтому они быстро рисуются даже при высокой загрузке CPU.

durka82

<win><r> taskkill /f /im первые_буквы_имени_исполняемого_файла* <enter>

А оно сработает? А то реакции на нажатие <win> в такой ситуации не вижу. Или главное набрать в слепую и оно даже без отрисовки сработает?

durka82

типа если раз в минуту не нажмешь Shift-Ctrl-ScrlLock то убивается известное приложения

Не, это слишком.
Вроде же винда даже сама умеет убивать подвисшее, другое дело считает ли она такое подвисшим?..

durka82

вот чем мне нравится 2k и 2k3 - это тем, что снять такое в них значительно легче вне зависимости от

Неужели так отличается от ХР?
Или это типа серверные оси?
Но вроде и в ХР есть галочка, которую можно перевести в "приоритет для фоновых приложений"?.. Или это не оно?

elenangel

в том то и дело, если угадаешь момент когда win-r уже запустился (возможно не нарисовался, но сообщения принимает) и вслепую набрал указанное, то оно через какое-то время сработает. способ не стопудовый, потому как можно "промазать" и набрать команду не в то окно - в условиях торможения это более чем реально. так что лучше поставь prkiller который тут советовали.

elenangel

она (винда) убивает подвисшее после того как ты дал команду на закрытие и после отсутствия реакции на эту команду со стороны приложения в течении N секунд. интервал вроде твикерами настраивается, но в общем случае винда по своей инициативе никого убивать не будет, что достаточно разумно - ведь если какая-либо программа запустит могучие долгие вычисления в основном потоке, то она с точки зрения операционки "зависнет", просто на самом-то деле она по завершении полезной работы "отвиснет" и обработает сообщения из своей очереди.

kruzer25

если какая-либо программа запустит могучие долгие вычисления в основном потоке
Строго говоря, это неправильная программа.

kotenok1710

п.с.: Вот интересно, а у 7-ки как с этим? Или чуда не случилось (всё-таки в нормальной оси у приложения не должно быть ни единого шанса повесить систему)?
В семерке еще такого не наблюдал. Все, что зависало и не давало закрывать окно приложения с убийством процесса замечательно убивалось через таск манагер

elenangel

Строго говоря, это неправильная программа.
согласен, но это же не повод резать ей яйца. может это какой-то перебор, который пользователь накатал за 5 минут в любимой среде любимого языка, ему что, в обязательном порядке многопоточность прикручивать?

elenangel

попробуй завесить многопоточную прогу в режиме интерактивной отладки

kruzer25

может это какой-то перебор, который пользователь накатал за 5 минут в любимой среде любимого языка
Я в любимой среде любимого языка делаю консольные программы, которые почему-то безо всяких проблем реагируют на CtrlC и CtrlBreak (несмотря на то, что в это время у них идёт мегаперебор соответственно, зависшими их считать нельзя. Конечно же, руками я там обработку этих клавиатурных сочетаний не реализую.
Подозреваю, что результат в любой другой приличной среде с приличным языком будет тем же.
Вообще, с таким зависанием я сталкивался только у графических программ - а такое уже непонятно зачем накатывать за 5 минут, уж лучше консольное. Графическая программа должна делать вычисления не в основном потоке; основной поток - для обработки сообщений.

elenangel

ну понятно, что в консольной есть какие-то обработчики по умолчанию. а графическую прогу для вычислений можно делать в том случае, если хочешь например на халяву поиметь диалоги выбора-сохранения файла или еще какие-то компоненты, которым форма нужна. в этом случае обычно ломает делать отдельный поток и вся обработка вешается на волшебную кнопку "пыщь". это конечно не правильно, зато быстро и результат в любом случае будет получен.

kruzer25

это конечно не правильно, зато быстро
Ну да, сэкономили пару строчек кода.

Dasar

Ну да, сэкономили пару строчек кода.
отдельный поток для решения задачи топикстартера не поможет, а может даже ухудшиться ситуацию.
жесткий случай - программа поднимает штуки 4 потока с повышенным приоритетом в которых что-то считается, при этом главный поток продолжает работать в нормальном режиме.
в итоге, такая шняга "завесит" винду нафиг, но при этом с точки зрения винды приложение будет нормальным - не зависшим.

kruzer25

штуки 4 потока с повышенным приоритетом в которых что-то считается, при этом главный поток продолжает работать в нормальном режиме
Ну это уже надо специально постараться, чтобы такое написать.
Оставить комментарий
Имя или ник:
Комментарий: