ZhaoShanGeng commited on
Commit ·
44af8fa
1
Parent(s): 413cb9b
fix: 修复子进程清理问题,避免孤儿进程
Browse files- src/AntigravityRequester.js +20 -22
src/AntigravityRequester.js
CHANGED
|
@@ -259,36 +259,34 @@ class antigravityRequester {
|
|
| 259 |
// 清理缓冲区
|
| 260 |
this.buffer = '';
|
| 261 |
|
|
|
|
|
|
|
|
|
|
| 262 |
// 关闭输入流
|
| 263 |
try {
|
| 264 |
-
|
| 265 |
} catch (e) {
|
| 266 |
// 忽略关闭错误
|
| 267 |
}
|
| 268 |
|
| 269 |
-
//
|
| 270 |
-
|
| 271 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 272 |
|
| 273 |
-
|
| 274 |
-
|
| 275 |
-
|
| 276 |
-
|
| 277 |
-
// 如果 SIGTERM 无效,1秒后使用 SIGKILL
|
| 278 |
-
setTimeout(() => {
|
| 279 |
-
try {
|
| 280 |
-
if (proc && !proc.killed) {
|
| 281 |
-
proc.kill('SIGKILL');
|
| 282 |
-
}
|
| 283 |
-
} catch (e) {
|
| 284 |
-
// 忽略错误
|
| 285 |
-
}
|
| 286 |
-
}, 1000);
|
| 287 |
-
}
|
| 288 |
-
} catch (e) {
|
| 289 |
-
// 忽略错误
|
| 290 |
}
|
| 291 |
-
}
|
|
|
|
|
|
|
| 292 |
}
|
| 293 |
}
|
| 294 |
}
|
|
|
|
| 259 |
// 清理缓冲区
|
| 260 |
this.buffer = '';
|
| 261 |
|
| 262 |
+
const proc = this.proc;
|
| 263 |
+
this.proc = null;
|
| 264 |
+
|
| 265 |
// 关闭输入流
|
| 266 |
try {
|
| 267 |
+
proc.stdin.end();
|
| 268 |
} catch (e) {
|
| 269 |
// 忽略关闭错误
|
| 270 |
}
|
| 271 |
|
| 272 |
+
// 立即发送 SIGTERM 终止子进程,不使用 setTimeout
|
| 273 |
+
// 这样可以确保在主进程退出前子进程被正确终止
|
| 274 |
+
try {
|
| 275 |
+
if (proc && !proc.killed) {
|
| 276 |
+
proc.kill('SIGTERM');
|
| 277 |
+
}
|
| 278 |
+
} catch (e) {
|
| 279 |
+
// 忽略错误
|
| 280 |
+
}
|
| 281 |
|
| 282 |
+
// 如果 SIGTERM 无效,立即使用 SIGKILL
|
| 283 |
+
try {
|
| 284 |
+
if (proc && !proc.killed) {
|
| 285 |
+
proc.kill('SIGKILL');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 286 |
}
|
| 287 |
+
} catch (e) {
|
| 288 |
+
// 忽略错误
|
| 289 |
+
}
|
| 290 |
}
|
| 291 |
}
|
| 292 |
}
|