P213 · 任务流程

启动、等待并清理辅助进程

Manage helper process lifetime

启动依赖后确认就绪,执行任务后清理本次创建的进程。

编辑审核

以下示例与示意结果由本站编写,用于说明方法,不是模型实测结果。

使用场景

浏览器测试需要前端和后端服务,执行前可能已有用户服务在监听。教学任务允许启动自己的测试进程,但不允许结束现有服务。测试失败或就绪超时也必须处理本次资源,不能留下不明后台进程。

具体做法

启动前确认端口与进程归属,复用已有服务时明确它不是本次清理对象。记录新启动的进程,限时等应用就绪,再运行测试并保存结果。在 finally 清理本次拥有的进程与必要子进程;启动、测试和清理的错误分别报告,不用清理成功覆盖测试失败。

反例

无视现有监听启动重复服务,测试失败后留后台进程。结束时按端口杀所有服务,不核对是否属于用户。

改进写法

按教学范围先核对现有前后端服务;只有需要且允许时启动新测试进程,并保存其身份。限时检查应用就绪,不仅检查端口可连。运行浏览器测试,保留退出码与输出;finally 只清理本次拥有的服务和对应子进程。复用的用户服务保持运行,清理失败单独报告,测试失败仍作为测试结论。

为什么这样改

流程失败会跳过后续普通语句,finally 把清理从成功路径移到所有路径。归属记录又使清理不会把用户已有服务当作本次资源。

如何验证

教学模拟正常结束、测试失败和第二个服务启动失败,三者都清理已启动的拥有进程;既有用户服务仍在。检查最终报告保留测试/启动错误与清理状态。

仅看到进程 terminate 返回不能证明子进程已结束,就绪端口也不能证明应用健康。

适用边界

来源脚本使用 shell 进程和端口检查,本篇应用健康与进程树检查是加强的教学约定,不声称上游已经完全保障。实际启动、日志消费和终止机制依平台而异;本篇不启动或结束真实服务。

原文与版本

如何收录这些方法