38 lines
1.4 KiB
Markdown
38 lines
1.4 KiB
Markdown
---
|
||||
|
|
id: T-103
|
|||
|
|
title: 实现优雅关闭、强制关闭和 Job Object 进程树
|
|||
|
|
phase: 1
|
|||
|
|
deps: [T-102]
|
|||
|
|
status: DONE
|
|||
|
|
created: 2026-07-22
|
|||
|
|
owner: codex
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 需求与背景
|
|||
|
|
|
|||
|
|
浏览器是多进程架构,Chub 必须提供实例级关闭能力,同时避免通过进程名称影响用户的其他 Chrome/Edge。
|
|||
|
|
|
|||
|
|
## 方案与边界
|
|||
|
|
|
|||
|
|
- `Launcher.StopProfile` 只定位本 registry 中的规范化 user data dir。
|
|||
|
|
- Windows 优雅关闭向对应 PID 的窗口发送 `WM_CLOSE`。
|
|||
|
|
- Windows 启动进程加入 Job Object;强制关闭调用 `TerminateJobObject`,覆盖该实例的子进程树。
|
|||
|
|
- 非 Windows 保留显式降级:仅 force 使用进程 Kill,graceful 返回 unsupported。
|
|||
|
|
- 外部未注册进程不提供 Stop 接口。
|
|||
|
|
|
|||
|
|
## 验收要点
|
|||
|
|
|
|||
|
|
- 优雅关闭与强制关闭传递正确模式。
|
|||
|
|
- 未注册 profile 返回 `ErrInstanceNotFound`。
|
|||
|
|
- 取消 Stop 不执行关闭动作。
|
|||
|
|
- Windows Job Object 和窗口消息代码可编译,现有测试通过。
|
|||
|
|
- `go test ./...`、`go vet ./...` 通过。
|
|||
|
|
|
|||
|
|
## 执行记录
|
|||
|
|
|
|||
|
|
- 状态:DONE
|
|||
|
|
- 变更:新增实例 StopProfile、RunnerProcessController、Windows Job Object、WM_CLOSE 和非 Windows 降级实现。
|
|||
|
|
- 验证:`gofmt`、`go test ./...`、`go vet ./...` 均通过。
|
|||
|
|
- 阻塞:无。
|
|||
|
|
- 残余风险:真实 Chrome/Edge 窗口优雅关闭、子进程回收和强制关闭需 T-104 Windows smoke 验证。
|