From 8f361377897816c77b2c75e6514b3a6c2d42fc7e Mon Sep 17 00:00:00 2001 From: Andre Weinand Date: Fri, 12 Jan 2018 12:28:55 +0100 Subject: [PATCH] Windows fix for #37589 (compound launches in Integrated Terminal) --- .../parts/debug/electron-browser/terminalSupport.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/parts/debug/electron-browser/terminalSupport.ts b/src/vs/workbench/parts/debug/electron-browser/terminalSupport.ts index 8dac21d8fc3..3cf08e18ec4 100644 --- a/src/vs/workbench/parts/debug/electron-browser/terminalSupport.ts +++ b/src/vs/workbench/parts/debug/electron-browser/terminalSupport.ts @@ -49,9 +49,16 @@ export class TerminalSupport { } private static isBusy(t: ITerminalInstance): boolean { - if ((platform.isMacintosh || platform.isLinux) && t.processId) { - const result = cp.spawnSync('/usr/bin/pgrep', ['-P', String(t.processId)]); - return result.stdout.toString().trim().length > 0; + if (t.processId) { + // if shell has at least one child process, assume that shell is busy + if (platform.isWindows) { + const result = cp.spawnSync('wmic', ['process', 'get', 'ParentProcessId']); + const pids = result.stdout.toString().split('\r\n'); + return pids.some(p => parseInt(p) === t.processId); + } else { + const result = cp.spawnSync('/usr/bin/pgrep', ['-P', String(t.processId)]); + return result.stdout.toString().trim().length > 0; + } } return true; } -- GitLab