Способ уничтожить процесс программно с помощью PID - PullRequest
1 голос
/ 12 апреля 2019

Рабочая среда: c ++, windows

Я хочу сохранить все pids (не имя процесса), а затем уничтожить процессы программно, когда я хочу уничтожить.Я знаю, что могу убить процесс с помощью системы ("taskkill /pid xxxx"), но я хочу знать лучший / лучший способ убить процесс с помощью pid.Каков наилучший способ убить процесс и почему?

Ответы [ 2 ]

2 голосов
/ 12 апреля 2019

К счастью, убить его после получения PID довольно легко.

  1. do OpenProcess, чтобы получить дескриптор процесса из PID
    • , обязательно укажите PROCESS_TERMINATE вправо.
  2. сделать TerminateProcess чтобы убить процесс
1 голос
/ 12 апреля 2019

Вы можете убить процесс, используя OpenProcess () и TerminateProcess ().Код будет выглядеть примерно так:

HANDLE handle = OpenProcess(PROCESS_TERMINATE, FALSE, ProcessID);
if (NULL != handle) {   
    TerminateProcess(handle, 0);
    CloseHandle(handle);
}

Для неудобства использования system("taskkill /pid xxxx"), я предлагаю вам прочитать этот пост .Большое количество ответов было дано, чтобы объяснить, почему не следует использовать это выражение.

  • Медленно: для простой операции приходится перепрыгивать через множество ненужного кода Windows и отдельную программу.

  • Не переносимо: зависит от программы паузы.

  • Неприемлемый стиль: системный вызов должен выполняться только в случае крайней необходимости

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...