Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
686d6959
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
686d6959
编写于
7月 24, 2017
作者:
D
Daniel Imms
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Kill process tree when killing terminal
Fixes #26807
上级
bb2e8694
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
13 addition
and
1 deletion
+13
-1
src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts
...bench/parts/terminal/electron-browser/terminalInstance.ts
+1
-1
src/vs/workbench/parts/terminal/node/terminalProcess.ts
src/vs/workbench/parts/terminal/node/terminalProcess.ts
+12
-0
未找到文件。
src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts
浏览文件 @
686d6959
...
...
@@ -414,7 +414,7 @@ export class TerminalInstance implements ITerminalInstance {
}
if
(
this
.
_process
)
{
if
(
this
.
_process
.
connected
)
{
this
.
_process
.
kill
(
);
this
.
_process
.
send
({
event
:
'
shutdown
'
}
);
}
this
.
_process
=
null
;
}
...
...
src/vs/workbench/parts/terminal/node/terminalProcess.ts
浏览文件 @
686d6959
...
...
@@ -3,6 +3,7 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import
*
as
cp
from
'
child_process
'
;
import
*
as
os
from
'
os
'
;
import
*
as
path
from
'
path
'
;
import
*
as
pty
from
'
node-pty
'
;
...
...
@@ -51,7 +52,16 @@ var exitCode;
// Allow any trailing data events to be sent before the exit event is sent.
// See https://github.com/Tyriar/node-pty/issues/72
function
queueProcessExit
()
{
if
(
closeTimeout
)
{
clearTimeout
(
closeTimeout
);
}
closeTimeout
=
setTimeout
(
function
()
{
if
(
process
.
platform
===
'
win32
'
)
{
// Forcefully kill the entire process tree under the shell process
// on Windows as ptyProcess.kill can leave some lingering processes.
// See https://github.com/Microsoft/vscode/issues/26807
cp
.
execFileSync
(
'
taskkill.exe
'
,
[
'
/T
'
,
'
/F
'
,
'
/PID
'
,
ptyProcess
.
pid
.
toString
()]);
}
ptyProcess
.
kill
();
process
.
exit
(
exitCode
);
},
250
);
...
...
@@ -78,6 +88,8 @@ process.on('message', function (message) {
ptyProcess
.
write
(
message
.
data
);
}
else
if
(
message
.
event
===
'
resize
'
)
{
ptyProcess
.
resize
(
message
.
cols
,
message
.
rows
);
}
else
if
(
message
.
event
===
'
shutdown
'
)
{
queueProcessExit
();
}
});
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录