Как я могу убить процесс в 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

Другие вопросы по тегам