diff --git a/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessConnector.java b/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessConnector.java index 51212602684..63913543c95 100644 --- a/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessConnector.java +++ b/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessConnector.java @@ -243,11 +243,20 @@ public class ProcessConnector extends AbstractStreamsConnector { // Stop monitoring the process monitor.dispose(); + boolean isWindows = Platform.OS_WIN32.equals(Platform.getOS()); + + if (!isWindows) { + // Destroy the process first, except on windows (Bug 465674) + if (process != null) { process.destroy(); process = null; } + } + // Dispose the streams super.doDisconnect(); - // Dispose the process - if (process != null) { process.destroy(); process = null; } + if (isWindows) { + // On Windows destroy the process after closing streams + if (process != null) { process.destroy(); process = null; } + } // Set the terminal control state to CLOSED. fControl.setState(TerminalState.CLOSED);