int (@NotNull Process process, final long timeoutMillis) { Integer exitCode = waitFor(process, timeoutMillis); if (exitCode != null) { return exitCode; } LOG.warn("shell env loader is timed out"); // First, try to interrupt 'softly' (we know how to do it only on *nix) if (!SystemInfoRt.isWindows) { UnixProcessManager.sendSigIntToProcessTree(process); exitCode = waitFor(process, 1000L); if (exitCode != null) { return exitCode; } LOG.warn("failed to terminate shell env loader process gracefully, terminating forcibly"); } if (SystemInfoRt.isWindows) { WinProcessManager.kill(process, true); } else { UnixProcessManager.sendSigKillToProcessTree(process); } exitCode = waitFor(process, 1000L); if (exitCode != null) { return exitCode; } LOG.warn("failed to kill shell env loader"); return -1; }