Как закрыть программу принудительно, если она зависла и не реагирует на нажатия.

Доброго времени!
В ряде случаев даже самые «стабильные» и надежные программы могут перестать отзываться на какие-либо нажатия мышки/клавиатуры (т.е. попросту зависнуть).
Для решения вопроса, можно, конечно, перезагрузить ПК/ноутбук — но далеко не всегда это удобно (часть данных в др. ПО будет сброшена и не сохранится. ) .
Логично, что лучше всего закрыть только эту конкретно-зависшую программу. Всем известное сочетание ALT+F4 — далеко не всегда решает проблему, и, собственно, поэтому набросал небольшую заметку с несколькими способами принудительной ликвидации процесса.
Кстати!
Если ПК/ноутбук вообще не реагирует ни на одну из кнопок клавиатуры — то скорее всего зависла не только отдельно-взятая программа, но и в целом система.
Если так, то для перезагрузки/выключения устройства — зажмите кнопку питания (Power) на 4-5 сек. (разумеется, все несохраненные данные будут утеряны) .
Способы закрыть не отвечающую программу
Первый
Итак, самый очевидный и простой вариант — просто кликнуть правой кнопкой мышки по значку зависшей программы на панели задач Windows. После, во всплывшем окне достаточно будет выбрать вариант «закрыть окно» .

Второй
Если зависло полно-экранное приложение и до панели задач вы просто не можете добраться, попробуйте сочетания:
- WIN , или WIN+TAB , или ALT+TAB , или ALT+Enter — чтобы свернуть окно;
- ALT+F4 , или ESC , или ALT+Q — для закрытия (выхода) из программы.

Перечисленные «горячие» сочетания клавиш работают с подавляющем большинством ПО для Windows.
Третий
Нажмите сочетание клавиш Ctrl+Shift+Esc (или Ctrl+Alt+Del) для вызова диспетчер задач. Далее во вкладке процессы найдите зависшую программу (процесс), кликните по ней правой кнопкой мыши и в появившемся выберите «Снять задачу» . Через 3-5 сек. программа должна быть закрыта.

Ctrl+Shift+Esc или Ctrl+Alt+Del — открыть диспетчер задач
Кстати, если рабочий стол после этого стал отображаться «как-то не так» (или вообще не видно) — перезапустите процесс «Проводник» (или «Explorer» на англ.).
Примечание: также проводник можно перезапустить из командной строки, введя taskkill /F /IM explorer.exe & start explorer и нажав Enter.
Четвертый
Командная строка — универсальная штука, которая может помочь и с закрытием (ликвидацией) зависших процессов (программ). Кстати, если вы наловчитесь с ее использованием — закрывать зависшие полно-экранные приложения можно будет даже в «слепую» (когда на экране ничего не отображается).
Как это делается:
- сначала нужно открыть командную строку;
- после ввести tasklist и нажать Enter;
- на экране появится список всех процессов (следует уточнить имя процесса/программы, которую нужно закрыть);
- после ввести taskkill /IM chrome.exe /f и нажать Enter (вместо «chrome.exe» — указывается имя нужного процесса) .

Убиваем процесс через командную строку
Пятый
Если вышеприведенные варианты не увенчались успехом, можно прибегнуть к утилите Process Hacker (ссылка на SourceForge). Это бесплатное ПО, которое покажет вам все запущенные процессы, их приоритеты, занимаемую память, нагрузку и пр.
Чтобы ликвидировать (закрыть) в нем любую из запущенных программ — нужно просто ее выбрать в списке, затем нажать ПКМ по ее имени и в появившемся окне выбрать «Terminate tree» (см. пример ниже ).

Process Hacker 2 — закрыть дерево процессов
Стоит отметить, что Process Hacker закроет сразу всё дерево процессов, связанных с этой программой (чего не делают многие др. программы. ).
PS
Если у вас часто начала зависать какая-либо программа (еще хуже программы) — обратите внимание на:
- версию ПО (нежелательно использовать различные бета-версии). Проверьте, совместима ли версия ПО с вашей ОС (в помощь: какая версия Windows установлена на моем компьютере);
- обновите драйвера (желательно с офиц. сайта);
- проверьте жесткий диск (если он начал «сыпаться» — подвисания будут идти постоянно);
- прогоните систему с помощью спец. «одноразовых» антивирусных продуктов;
- возможно, вашему приложению не хватает ОЗУ (посмотрите при работе ПО — сколько памяти занято в диспетчере задач).
Кроме этого, рекомендую ознакомиться с тематическими инструкциями (ссылки ниже).
В помощь!
1) Вылетает или зависает игра. Что делать?
2) Зависает ноутбук: что делать? Диагностика и устранение причин зависания
3) Ошибка: Kernel-Power код 41, категория 63. Компьютер перезагружается или зависает
На этом пока всё.
Первая публикация: 24.04.2020
Как самостоятельно закрыть ООО: пошаговая инструкция
Добровольная ликвидация ООО — процесс долгий и непростой. Он занимает примерно 4 месяца, а может растянуться и на год. Вам предстоит трижды подать заявление в налоговую, два раза подготовить бухгалтерский баланс и сделать одну публикацию в СМИ. Обо всём по порядку — в нашей инструкции.
1 шаг. Принять решение о ликвидации
Проведите собрание участников ООО или подготовьте решение единственного учредителя, если открыли организацию в одиночку.
В протоколе собрания или решении учредителя напишите, что вы:
- Решили начать добровольную ликвидацию ООО.
- Утвердили состав ликвидационной комиссии и её председателя или назначили единоличного ликвидатора.
- Утвердили порядок и сроки ликвидации. Максимальный срок — один год, и безопаснее указывать именно его. Например, если в протоколе указать, что срок ликвидации составит три месяца, а процесс затянется — продлить его можно будет, только обратившись в Арбитражный суд. А значит, платить пошлину в размере 6 000 ₽ и ждать решения суда.
30 дней Эльбы в подарок
Оцените все возможности онлайн-бухгалтерии бесплатно
Попробовать бесплатно
2 шаг. Сообщить о ликвидации в налоговую
В течение трёх рабочих дней после принятия решение о ликвидации, подайте в регистрирующую налоговую:
- уведомление по форме № Р15016. Есть два варианта: а) подать уведомление на бумаге, б) воспользоваться сервисом налоговой — понадобится электронная подпись. В обоих случаях уведомление нужно заверить у нотариуса.
- протокол собрания учредителей или решение единственного учредителя о ликвидации фирмы.
Если не подать документы в налоговую в течение трёх дней, могут оштрафовать на 5 000 рублей.
Как подать документы:
- лично
- по почте ценным письмом с описью вложений
- в электронном виде через сайт Госуслуг
- через многофункциональный центр — но не все МФЦ принимают эти документы, позвоните им заранее.
Через 5 рабочих дней налоговая выдаст вам лист о внесении в ЕГРЮЛ записи о том, что организация находится в процедуре ликвидации. С этого момента нельзя изменять учредительные документы и участвовать как ООО в составе других организаций.
Уведомлять ПФР и ФСС о ликвидации больше не нужно, налоговики сделают это самостоятельно.
3 шаг. Рассказать о ликвидации в СМИ, опубликовать сведения на Федресурсе и сообщить контрагентам
- Опубликуйте в журнале «Вестник государственной регистрации» сообщение о ликвидации фирмы, порядке и сроке заявления требований кредиторами. Этот срок не может быть меньше двух месяцев. За это время все, кому должна ваша организация, могут потребовать возврата долга.
- В течение трёх рабочих дней с даты принятия решения о ликвидации внесите сведения в Единый федеральный реестр о фактах деятельности юридических лиц (Федресурс) . Для этого понадобится зайти на портал с электронной подписью, а также выставить и оплатить счёт за размещение сведений. Другой способ — через нотариуса с использованием его электронной подписи.
- Направьте письменные уведомления о ликвидации контрагентам, перед которыми у вас есть долги. Составьте их в свободной форме. Срок не установлен, но рекомендуем сделать это сразу после публикации в СМИ. Лучше всего направить письмо почтой — с объявленной ценностью и описью вложений. Так вы подтвердите, что письменно уведомили кредиторов. Шаблон уведомления контрагентов.
4 шаг. Сообщить в службу занятости и сотрудникам об увольнении
- Предупредите всех сотрудников о предстоящем увольнении не позднее, чем за 2 месяца. Для этого составьте письменное уведомление и ознакомьте с ним работников под роспись. Основание увольнения — по инициативе работодателя в связи с прекращением деятельности организации в соответствии с п.1 ст. 81 ТК РФ.
5 шаг. Подготовить промежуточный ликвидационный баланс и сдать его в налоговую
Минимум через два месяца после публикации сообщения о ликвидации в СМИ подготовьте промежуточный ликвидационный баланс. Специальных требований нет, но на практике его составляют по тем же правилам, что и обычный бухбаланс по форме №1, и добавляют сведения:
- о составе имущества организации,
- о требованиях, которые предъявили кредиторы, и результатах их рассмотрения,
- о требованиях, которые удовлетворил суд вступившим в законную силу решением.
Для подготовки баланса нужно разбираться в бухучёте, поэтому, если у вас нет опыта в этом деле, обратитесь за помощью к бухгалтеру.
Когда промежуточный бухбаланс готов, утвердите его на собрании учредителей или решением единственного участника, чтобы утвердить бухбаланс.
Подайте ликвидационный баланс в налоговую вместе с уведомлением № Р15016 . Приложите к документам подтверждение публикации в «Вестнике государственной регистрации» и протокол собрания учредителей или решение единственного участника ООО об утверждении бухбаланса. По закону они не нужны, но на практике налоговая может их попросить.
6 шаг. Рассчитаться по долгам
Платите по долгам в порядке очередности по Гражданскому кодексу. Сразу после утверждения ликвидационного баланса рассчитайтесь:
- в первую очередь с гражданами, перед которыми ваша организация отвечает за причинение морального вреда или вреда жизни и здоровью, если такие есть,
- во вторую очередь с работниками по трудовому договору по выплате зарплаты и выходных пособий.
Спустя месяц со дня утверждения ликвидационного баланса, погасите долги третьей и четвертой очереди:
- в третью очередь заплатите все налоги и страховые взносы, штрафы и пени,
- в четвертую очередь — оставшиеся долги.
Если денег не хватает, ликвидационная комиссия продаёт имущество организации на торгах. А если и выручка от продажи имущества не покроет долги компании, тогда нужно открывать процедуру банкротства. Для этого лучше обратиться к специалистам по делам о банкротстве.
7 шаг. Составить окончательный ликвидационный баланс
После расчётов с сотрудниками, контрагентами и государством, составьте и утвердите ликвидационный баланс. Он также составляется по общим правилам подготовки бухгалтерского баланса и утверждается на общем собрании учредителей или решением единственного участника ООО.
8 шаг. Отчитаться по налогам, уволенным сотрудникам и снять с учёта кассу
В течение месяца с момента утверждения ликвидационного баланса и до подачи документов в налоговую на закрытие, сдайте в фонды отчёты по уволенным сотрудникам:
- СЗВ-Стаж в составе ЕФС-1 в Социальный фонд на всех сотрудников, которые работали у вас в течение года ликвидации;
- Отчёт о персонифицированных сведениях в налоговую, если в течение последнего месяца ликвидации в ООО были сотрудники по трудовым и гражданско-правовым договорам;
- СЗВ-ТД в составе ЕФС-1 за кадровые события, например, за увольнения;
- расчёт по страховым взносам в налоговую,
- 4-ФСС в составе ЕФС-1. Если ликвидируете ООО до окончания расчётного периода — отправьте отчёт до подачи документов о ликвидации. На титульном листке поставьте отметку «Прекращение деятельности».
Также сдайте налоговую отчётность — закон не устанавливает сроки, но нужно это сделать до перехода к последнему этапу.
- декларацию по УСН
- 6-НДФЛ.
Снять кассу с учёта в налоговой можно несколькими способами: подать заявление в инспекции, на портале ФНС или в личном кабинете оператора фискальных данных (ОФД). Срок подачи заявления законодательно не ограничен.
9 шаг. Подать в налоговую документы на ликвидацию ООО
После утверждения ликвидационного баланса учредители могут разделить между собой имущество организации. И только в последнюю очередь подают документы в налоговую на закрытие:
- Заявление по форме Р15016.
- Ликвидационный бухгалтерский баланс
- Квитанцию об уплате госпошлины 800 рублей. Согласно поправкам, с 2019 года госпошлина не уплачивается в случае представления в регистрирующий орган электронных документов, необходимых для регистрации ликвидации юрлица. Статья 333.35 НК РФ
Подайте документы одним из способов:
- лично
- по почте ценным письмом с описью вложений
- в электронном виде через сайт Госуслуг
- через многофункциональный центр — но не все МФЦ принимают эти документы, позвоните им заранее.
Кто может помочь с документами
Есть сервис Документовед — он здорово помогает подготовить документы для ликвидации ООО.
Рассказываем о сложных вещах незанудно, понятно и с юмором на ютуб-канале
А что если не закрывать ООО?
Закрывать ООО — долго и сложно, поэтому часто встречаются организации без сотрудников, доходов и сделок. Такие фирмы не платят налоги и взносы, но по-прежнему должны сдавать нулевую отчётность.
Бывают брошенные организации, у которых нет движений по банковскому счёту и которые не сдают отчётность. Если это продолжается больше 12 месяцев, у налоговой появляется основание ликвидировать ООО в одностороннем порядке без согласия учредителей. Но это право, а не обязанность налоговой, поэтому на практике случается редко. Гораздо чаще брошенная организация продолжает числиться в ЕГРЮЛ, и её штрафуют за несданную отчётность.
Ещё один вариант избавиться от ООО — продать его. Это проще, чем закрыть организацию, но тут есть свои минусы:
- Такая возможность должна быть предусмотрена в уставе организации.
- Договор купли-продажи обязательно должен быть заверен у нотариуса — это стоит минимум 10 тысяч рублей, а максимальная стоимость может достигать 150 тысяч.
Статья актуальна на 03.07.2023
Завершение программы C++
Функция, объявленная exit в , завершает программу C++. Значение, предоставленное в качестве аргумента exit , возвращается операционной системе в качестве возвращаемого кода программы или кода выхода. Принято, чтобы нулевым кодом возврата обозначалось, что программа завершена успешно. Константы EXIT_FAILURE можно использовать, а EXIT_SUCCESS также определенные в , чтобы указать успешность или сбой программы.
Функция abort
Функция abort , объявленная в стандартном формате, включает , завершает программу C++. Разница между exit и abort заключается в том, что exit обработка завершения среды выполнения C++ выполняется (вызывается глобальные деструкторы объектов). abort немедленно завершает программу. Функция abort проходит обычный процесс уничтожения для инициализированных глобальных статических объектов. Также осуществляется обход всей специальной обработки, которая была задана с помощью функции atexit .
Корпорация Майкрософт: по соображениям совместимости Windows реализация abort microsoft может разрешить выполнение кода завершения библиотеки DLL в определенных обстоятельствах. Дополнительные сведения см. в разделе abort .
Функция atexit
Используйте функцию atexit , чтобы указать действия, выполняемые до завершения программы. Перед выполнением функции выхода не инициализированы глобальные статические объекты, инициализированные перед вызовом atexit .
return оператор in main
Инструкция return позволяет указать возвращаемое значение из main . Оператор return в main первую очередь действует как любая другая return инструкция. Все автоматические переменные уничтожаются. main Затем вызывает возвращаемое exit значение в качестве параметра. Рассмотрим следующий пример:
// return_statement.cpp #include struct S < int value; >; int main() < S s< 3 >; exit( 3 ); // or return 3; >
return Операторы exit , описанные в предыдущем примере, имеют аналогичное поведение. Как завершить программу, так и вернуть значение 3 операционной системе. Разница заключается в том, что exit не уничтожает автоматическую переменную s , а return оператор делает.
Как правило, C++ требует, чтобы функции, имеющие возвращаемые типы, отличные от void возвращаемого значения. Функция является исключением. Она main может завершиться без инструкции return . В этом случае он возвращает значение, зависящее от реализации, в вызывающий процесс. (По умолчанию MSVC возвращает значение 0.)
Уничтожение потоков и статических объектов
При вызове exit напрямую (или при вызове после оператора из main ), объекты потоков, связанные с текущим потоком return , уничтожаются. Затем статические объекты уничтожаются в обратном порядке их инициализации (после вызовов функций, указанных в , если таковые имеются atexit ). В следующем примере показано выполнение такого процесса инициализации и удаления.
Пример
В следующем примере статические объекты sd1 создаются и sd2 инициализированы перед записью main . После завершения работы этой программы с помощью инструкции return сначала sd2 уничтожается, а затем sd1 . Деструктор класса ShowData закрывает файлы, связанные с этими статическими объектами.
// using_exit_or_return1.cpp #include class ShowData < public: // Constructor opens a file. ShowData( const char *szDev ) < errno_t err; err = fopen_s(&OutputDev, szDev, "w" ); >// Destructor closes the file. ~ShowData() < fclose( OutputDev ); >// Disp function shows a string on the output device. void Disp( char *szData ) < fputs( szData, OutputDev ); >private: FILE *OutputDev; >; // Define a static object of type ShowData. The output device // selected is "CON" -- the standard output device. ShowData sd1 = "CON"; // Define another static object of type ShowData. The output // is directed to a file called "HELLO.DAT" ShowData sd2 = "hello.dat"; int main()
Другой способ написания этого кода заключается в объявлении ShowData объектов с блоком область, который неявно уничтожает их при выходе из область:
Завершение программы в Python
Однако, там не было объяснения какой метод лучше. Какой метод является наиболее «безаварийным»? И заодно: есть ли в Python понятие Autocloseable объектов? Если я сделаю ранее завершение программы, нужно ли мне будет закрывать файлы и т.д.?
Отслеживать
7,797 13 13 золотых знаков 25 25 серебряных знаков 55 55 бронзовых знаков
задан 17 окт 2015 в 16:11
1,337 4 4 золотых знака 17 17 серебряных знаков 34 34 бронзовых знака
17 окт 2015 в 16:23
Спасибо! Лучшим решением является использование sys.exit()
17 окт 2015 в 16:28
на счет второго: лучше закрывать/завершать все операции перед завершением программы
17 окт 2015 в 16:32
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Короткий ответ:
Лучше использовать sys.exit()
Механизм завершения процесса в Python реализован через бросание исключения SystemExit , таким образом можно просто создать подобное исключение и программа завершится:
raise SystemExit # или даже передать число -- код ошибки завершения программы raise SystemExit(1)
Функция exit и аналогичная ей quit созданы для удобства работы в интерактивном режиме и их не рекомендуется использовать внутри скриптов:
They are useful for the interactive interpreter shell and should not be used in programs.
По факту они также просто поднимают исключение, и при попытке вызова без скобок напишут подсказку о правильном способе выхода из интерпретатора:
>>> quit Use quit() or Ctrl-D (i.e. EOF) to exit >>> exit Use exit() or Ctrl-D (i.e. EOF) to exit
Использовать sys.exit стоит потому, что эта функция лежит в стандартном модуле и будет всегда там доступна. Также это довольно явный способ выразить своё желание завершить программу.
Есть также дополнительный метод для немедленного завершения программы: os._exit . У него довольно специфическая область применения, и там же есть замечание:
The standard way to exit is sys.exit(n)
Т.е. здесь даётся подтверждение того, что стандартный способ завершения программы — это вызов sys.exit .
Функция os.abort , упомянутая вами, использует механизм сигналов процессу. Конкретно при вызове этой функции будет передан сигнал SIGABRT , что в linux приведёт к завершению программы и созданию дампа памяти процесса. Подобное завершение рассматривается операционной системой как аварийное, поэтому не стоит использовать его для безаварийного завершения приложения.
По второй части вопроса. В Python есть развитая система контекстных менеджеров: классов, которые умеют работать с оператором with . Самое частое использование этого механизма встречается, вероятно, с файлами.
with open('filename') as my_file: print(my_file.read())
Этот код откроет файл, напечатает его содержимое на экран и закроет файл автоматически, даже если возникнет исключение при его печати.
Для классов, которые не приспособлены для работы с with есть функция closing в библиотеке contextlib . Из документации:
with closing(.open()) as f:
is equivalent to this:
f = .open() try: finally: f.close()
Вот небольшой пример работы этой функции:
import contextlib class Closeable: def close(self): print('closed') with contextlib.closing(Closeable()): pass # печатает closed
Теперь небольшое отступление о том, почему стоит использовать конструкцию with .
Известно, что программа завершится от любого необработанного исключения, а не только от SystemExit . Таким образом, если в вашем коде используются какие-то ресурсы, которые требуется правильным образом закрывать перед завершением работы, нужно оборачивать работу с ними в блоки try . finally . .
Однако, при использовании конструкции with это оборачивание происходит автоматически, и все ресурсы закрываются корректно.
Так как выход из программы — это всего лишь брошенное исключение, то и в случае использования функции sys.exit закрытие открытых в операторе with ресурсов произойдёт корректно:
with contextlib.closing(Closeable()): sys.exit() # напечатает closed
Вы можете писать также и свои классы, предоставляющие ресурсы или классы, оборачивающие другие, которые нужно уметь закрывать автоматически. Для этого используются методы __enter__ и __exit__ .
- Похожий вопрос с англоязычного StackOverflow
- Функции, добавляемые модулем site
- Документация по конструкции with
- Документация по функции closing
- Документация по исключению SystemExit
- Документация по функции os._exit
- Документация по функции sys.exit
- Документация по функции os.abort
- Описание системного сигнала SIGABRT