Как я могу убить процесс в Windows и Linux?
Есть ли простой способ убить процесс, используя его идентификатор процесса (pid_t
в Linux и PROCESS_INFORMATION::dwProcessId
в винде)?
1 ответ
Решение
Linux: kill(pid, SIGKILL);
Окна: TerminateProcess(Handle, 1)
откуда вы берете ручку OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcessId);
Обратите внимание, что оба из них просто убьют процесс, цель не имеет возможности правильно завершить работу. Если вы хотите, чтобы у цели была возможность сделать это, используйте SIGHUP, а затем SIGTERM в Linux. Для окон вы можете отправить WM_SYSCOMMAND/SC_CLOSE, если у вас есть дескриптор главного окна целевых приложений, это можно найти с помощью EnumWindows и GetWindowThreadProcessId