ZhaoShanGeng commited on
Commit
44af8fa
·
1 Parent(s): 413cb9b

fix: 修复子进程清理问题,避免孤儿进程

Browse files
Files changed (1) hide show
  1. src/AntigravityRequester.js +20 -22
src/AntigravityRequester.js CHANGED
@@ -259,36 +259,34 @@ class antigravityRequester {
259
  // 清理缓冲区
260
  this.buffer = '';
261
 
 
 
 
262
  // 关闭输入流
263
  try {
264
- this.proc.stdin.end();
265
  } catch (e) {
266
  // 忽略关闭错误
267
  }
268
 
269
- // 子进程一点时间优雅退出否则强制终止
270
- const proc = this.proc;
271
- this.proc = null;
 
 
 
 
 
 
272
 
273
- setTimeout(() => {
274
- try {
275
- if (proc && !proc.killed) {
276
- proc.kill('SIGTERM');
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
- }, 500);
 
 
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
  }