From b5ce9665c0853d102b4d84821299ae1367fda783 Mon Sep 17 00:00:00 2001 From: Eldar Abusalimov Date: Wed, 14 Dec 2016 20:57:07 +0300 Subject: [PATCH] execution: Add OSProcessUtil.killProcess(int pid) --- .../execution/process/OSProcessUtil.java | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/execution/process/OSProcessUtil.java b/platform/platform-impl/src/com/intellij/execution/process/OSProcessUtil.java index 6c201d28b0e4..bb7e0640a0e4 100644 --- a/platform/platform-impl/src/com/intellij/execution/process/OSProcessUtil.java +++ b/platform/platform-impl/src/com/intellij/execution/process/OSProcessUtil.java @@ -75,13 +75,17 @@ public class OSProcessUtil { } public static void killProcess(@NotNull Process process) { + killProcess(getProcessID(process)); + } + + public static void killProcess(int pid) { if (SystemInfo.isWindows) { try { if (Registry.is("disable.winp")) { - WinProcessManager.kill(process, false); + WinProcessManager.kill(pid, false); } else { - createWinProcess(process).kill(); + createWinProcess(pid).kill(); } } catch (Throwable e) { @@ -89,7 +93,7 @@ public class OSProcessUtil { } } else if (SystemInfo.isUnix) { - UnixProcessManager.sendSignal(UnixProcessManager.getProcessPid(process), UnixProcessManager.SIGKILL); + UnixProcessManager.sendSignal(pid, UnixProcessManager.SIGKILL); } } @@ -104,8 +108,8 @@ public class OSProcessUtil { } } catch (Throwable e) { - LOG.info("Cannot get process id", e); - return -1; + throw new IllegalStateException("Cannot get PID from instance of " + process.getClass() + + ", OS: " + SystemInfo.OS_NAME, e); } } else if (SystemInfo.isUnix) { @@ -120,7 +124,12 @@ public class OSProcessUtil { if (process instanceof RunnerWinProcess) process = ((RunnerWinProcess)process).getOriginalProcess(); return new WinProcess(process); } - + + @NotNull + private static WinProcess createWinProcess(int pid) { + return new WinProcess(pid); + } + @Nullable public static List getCommandLinesOfRunningProcesses() { List result = new ArrayList<>();