From bf910ed6158e73087025535abab6a3af89a4d9c7 Mon Sep 17 00:00:00 2001 From: Kun Ren Date: Sun, 9 Jan 2022 22:29:13 +0800 Subject: [PATCH 1/3] Use taskkill for win32 --- package.json | 1 - src/util.ts | 9 +++++++-- yarn.lock | 5 ----- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index d6ea62381..3eb9c1650 100644 --- a/package.json +++ b/package.json @@ -1726,7 +1726,6 @@ "node-fetch": "^2.6.1", "popper.js": "^1.16.1", "showdown": "^1.9.1", - "tree-kill": "^1.2.2", "vscode-languageclient": "^7.0.0", "vsls": "^1.0.4753", "winreg": "^1.2.4", diff --git a/src/util.ts b/src/util.ts index c5e568984..c683284f9 100644 --- a/src/util.ts +++ b/src/util.ts @@ -8,7 +8,6 @@ import * as vscode from 'vscode'; import * as cp from 'child_process'; import { rGuestService, isGuestSession } from './liveShare'; import { extensionContext } from './extension'; -import * as kill from 'tree-kill'; export function config(): vscode.WorkspaceConfiguration { return vscode.workspace.getConfiguration('r'); @@ -427,7 +426,13 @@ export function exec(command: string, args?: ReadonlyArray, options?: cp const disposable = asDisposable(proc, () => { if (running) { if (process.platform === 'win32') { - kill(proc.pid); + cp.exec(`taskkill /PID ${proc.pid} /T /F`, (error, stdout, stderr) => { + console.log('taskkill stdout: ' + stdout); + console.log('taskkill stderr: ' + stderr); + if (error) { + console.log('error: ' + error.message); + } + }); } else { proc.kill('SIGKILL'); } diff --git a/yarn.lock b/yarn.lock index 8e9baca73..84bc1965b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2597,11 +2597,6 @@ to-regex-range@^5.0.1: resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9" integrity sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk= -tree-kill@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" - integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== - ts-loader@^9.2.3: version "9.2.3" resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.2.3.tgz#dc3b6362a4d4382493cd4f138d345f419656de68" From 19678b074c7c06cc4e0682f261d6741732076df2 Mon Sep 17 00:00:00 2001 From: Kun Ren Date: Mon, 10 Jan 2022 15:50:32 +0000 Subject: [PATCH 2/3] Use spawn + taskkill in windows --- src/util.ts | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/src/util.ts b/src/util.ts index c683284f9..e37bea037 100644 --- a/src/util.ts +++ b/src/util.ts @@ -410,13 +410,7 @@ export function asDisposable(toDispose: T, disposeFunction: (...args: unknown export type DisposableProcess = cp.ChildProcessWithoutNullStreams & vscode.Disposable; export function exec(command: string, args?: ReadonlyArray, options?: cp.CommonOptions, onDisposed?: () => unknown): DisposableProcess { - let proc: cp.ChildProcess; - if (process.platform === 'win32') { - const cmd = `"${command}" ${args.map(s => `"${s}"`).join(' ')}`; - proc = cp.exec(cmd, options); - } else { - proc = cp.spawn(command, args, options); - } + const proc = cp.spawn(command, args, options); let running = true; const exitHandler = () => { running = false; @@ -426,13 +420,7 @@ export function exec(command: string, args?: ReadonlyArray, options?: cp const disposable = asDisposable(proc, () => { if (running) { if (process.platform === 'win32') { - cp.exec(`taskkill /PID ${proc.pid} /T /F`, (error, stdout, stderr) => { - console.log('taskkill stdout: ' + stdout); - console.log('taskkill stderr: ' + stderr); - if (error) { - console.log('error: ' + error.message); - } - }); + cp.spawn('taskkill', ['/pid', String(proc.pid), '/f', '/t']); } else { proc.kill('SIGKILL'); } From 83b216423b777512b63737a1c94f7ad340a2d2c3 Mon Sep 17 00:00:00 2001 From: Kun Ren Date: Tue, 11 Jan 2022 06:20:43 +0000 Subject: [PATCH 3/3] Revert to using tree-kill --- package.json | 1 + src/util.ts | 3 ++- yarn.lock | 5 +++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 3eb9c1650..d6ea62381 100644 --- a/package.json +++ b/package.json @@ -1726,6 +1726,7 @@ "node-fetch": "^2.6.1", "popper.js": "^1.16.1", "showdown": "^1.9.1", + "tree-kill": "^1.2.2", "vscode-languageclient": "^7.0.0", "vsls": "^1.0.4753", "winreg": "^1.2.4", diff --git a/src/util.ts b/src/util.ts index e37bea037..638365ee7 100644 --- a/src/util.ts +++ b/src/util.ts @@ -8,6 +8,7 @@ import * as vscode from 'vscode'; import * as cp from 'child_process'; import { rGuestService, isGuestSession } from './liveShare'; import { extensionContext } from './extension'; +import * as kill from 'tree-kill'; export function config(): vscode.WorkspaceConfiguration { return vscode.workspace.getConfiguration('r'); @@ -420,7 +421,7 @@ export function exec(command: string, args?: ReadonlyArray, options?: cp const disposable = asDisposable(proc, () => { if (running) { if (process.platform === 'win32') { - cp.spawn('taskkill', ['/pid', String(proc.pid), '/f', '/t']); + kill(proc.pid); } else { proc.kill('SIGKILL'); } diff --git a/yarn.lock b/yarn.lock index 84bc1965b..8e9baca73 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2597,6 +2597,11 @@ to-regex-range@^5.0.1: resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9" integrity sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk= +tree-kill@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + ts-loader@^9.2.3: version "9.2.3" resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.2.3.tgz#dc3b6362a4d4382493cd4f138d345f419656de68"