waitForProcessExit 等待进程退出
(task *TaskInfo, timeout int)
| 442 | |
| 443 | // waitForProcessExit 等待进程退出 |
| 444 | func (tm *FileTaskManager) waitForProcessExit(task *TaskInfo, timeout int) { |
| 445 | time.Sleep(time.Duration(timeout) * time.Second) |
| 446 | |
| 447 | tm.mu.Lock() |
| 448 | defer tm.mu.Unlock() |
| 449 | |
| 450 | if task.Status == "killed" { |
| 451 | // 检查进程是否真的退出了 |
| 452 | proc, err := os.FindProcess(task.PID) |
| 453 | if err == nil { |
| 454 | err = proc.Signal(syscall.Signal(0)) |
| 455 | if err != nil { |
| 456 | // 进程已退出 |
| 457 | now := time.Now() |
| 458 | task.EndTime = &now |
| 459 | task.Duration = now.Sub(task.StartTime) |
| 460 | task.Status = "completed" |
| 461 | task.LastUpdate = now |
| 462 | _ = tm.saveTask(task) |
| 463 | } |
| 464 | } |
| 465 | } |
| 466 | } |
| 467 | |
| 468 | // saveTask 保存任务信息到文件 |
| 469 | func (tm *FileTaskManager) saveTask(task *TaskInfo) error { |