Як я можу вишукано попросити запущену програму припинити?


19

У Unix або Linux легко витончено попросити запущену програму припинити: ви надсилаєте їй сигнал SIGTERM. Якщо його ідентифікатор процесу 1234, ви можете просто запустити kill 1234або kill -s TERM 1234або kill -15 1234.

Як я можу зробити те саме в Windows?

Якщо я пам'ятаю правильно, функція "Закінчення завдання" диспетчера завдань (не її функція "Закінчити процес") використовувалась для того, щоб робити те, що я хочу. Але, як і для Windows 8.1, це вже не так ніжно; коли я використовую цю функцію, це призводить до втрати незбережених даних.

Я не хочу писати жодного коду для цього. Якби я це зробив, я б запитав про Stack Overflow. :)


2
Якщо ви розробник програмного забезпечення та хочете це зробити програмно, перегляньте відповідне запитання щодо переповнення стека про те, як граціозно попросити процес припинити .
незабутніidSupportsMonica

4
Немає нічого витонченого у Windows ........
Моаб

Відповіді:


17

taskkill.exe

Енді Е пише, що можна використовувати taskkill.exe.

Для завершення процесу з ідентифікатором процесу 1234:

taskkill /pid 1234

Щоб скасувати notepad.exe:

taskkill /im notepad.exe

Для отримання додаткової допомоги:

taskkill /?

Він додає:

/fВимикач змусить вбити, але не використовувати його просто посилає сигнал завершення , щоб додаток закривається коректно.

Він правий. Я спробував використати taskkill.exe (без /f) для припинення роботи Блокнота, і він працював як очікувалося. Блокнот запитав мене, чи хочу я зберегти збережений текст, який я ввів.

Я використовую домашню версію Windows 8.1. Схоже, що в taskkill.exeкомплекті із Windows додається безкоштовно. Це в c:\windows\system32.

Або просто вийти з системи

Якщо ви не хочете займатись цим, просто вийдіть із облікового запису користувача Windows, а потім увійдіть знову.

Консольні програми

Щодо консольних додатків (наприклад, PowerShell), Крис Бекк додає :

Немає реального способу витончено закрити консольні програми в Windows. Їм потрібно підтримувати якийсь витончений механізм закриття.


Зауважте, що це не точно повторює те, що відбувається при виході або відключенні; про це дивіться stackoverflow.com/questions/520910/…
Метт Макенрі

5

Ви можете використовувати rmlogotest.exe(інструмент тестування логотипу Restart Manager). Ця безкоштовна утиліта, написана корпорацією Майкрософт, є частиною комплекту сертифікації додатків Windows.

Щоб отримати останню версію комплекту сертифікації програм для Windows, завантажте та запустіть інсталятор Windows SDK. (Ви можете знайти останню програму встановлення Windows SDK, здійснивши пошук у Google.) Зніміть усі прапорці за винятком вікна комплекту сертифікації додатків для Windows. Дочекайтеся завантаження та встановлення комплекту. Якщо я правильно пригадую, комплект - це пару сотень мегабайт.

rmlogotest.exeймовірно, буде, C:\Program Files (x86)\Windows Kits\10\App Certification Kitякщо ви використовуєте версію 10 SDK для Windows.

Відкрийте командний рядок. Перейдіть до правильного каталогу. Введіть rmlogotestпробіл, а потім ідентифікаційний номер процесу.

Якщо процес знає "Менеджер перезапуску", rmlogotestвиграшно його перезапустіть та скаже вам "Перевірку логотипу пройдено". В іншому випадку rmlogotestви попросите його граціозно припинити, тоді він може сказати вам "Не вдалося перевірити логотип".

Я спробував використати, rmlogotest.exeщоб скасувати Блокнот, і він працював, як очікувалося. Блокнот запитав мене, чи хочу я зберегти збережений текст, який я ввів.

(У випадку, якщо вам цікаво, що таке та чи робить Менеджер перезапуску, дозвольте мені пояснити. Менеджер перезапуску є частиною Windows і використовується Windows Installer 4.0 і новіших версій. Коли Windows Installer потребує перезапису або видалення відкритого файлу, він використовує три- покроковий процес. Він повідомляє диспетчеру перезапуску граціозно закінчити процес, який використовує файл. Він перезаписує файл. Потім він каже менеджеру перезапуску знову запустити процес.)


0

GnuWIN32 має порти Windows із поширеними утилітами Linux, включаючи kill.exe

http://gnuwin32.sourceforge.net/

Він підтримує наступні сигнали за іменем або числом

λ kill -l                                                                                                                                                                                                                                                                
INT                                                                                                                                                                                                                                                                      
ILL                                                                                                                                                                                                                                                                      
FPE                                                                                                                                                                                                                                                                      
KILL                                                                                                                                                                                                                                                                     
SEGV                                                                                                                                                                                                                                                                     
TERM                                                                                                                                                                                                                                                                     
CHLD                                                                                                                                                                                                                                                                     
ABRT             
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.