MCPcopy Create free account
hub / github.com/astercloud/aster / KillTask

Method KillTask

pkg/tools/builtin/task_manager.go:263–301  ·  view source on GitHub ↗

KillTask 终止任务

(taskID string, signal string, timeout int)

Source from the content-addressed store, hash-verified

261
262// KillTask 终止任务
263func (tm *FileTaskManager) KillTask(taskID string, signal string, timeout int) error {
264 tm.mu.Lock()
265 defer tm.mu.Unlock()
266
267 task, exists := tm.tasks[taskID]
268 if !exists {
269 return fmt.Errorf("task not found: %s", taskID)
270 }
271
272 if task.Status != "running" {
273 return fmt.Errorf("task is not running: %s", taskID)
274 }
275
276 // 获取信号编号
277 signalNum := tm.getSignalNumber(signal)
278
279 // 发送信号
280 proc, err := os.FindProcess(task.PID)
281 if err != nil {
282 return fmt.Errorf("failed to find process %d: %w", task.PID, err)
283 }
284
285 err = proc.Signal(syscall.Signal(signalNum))
286 if err != nil {
287 return fmt.Errorf("failed to send signal %s to process %d: %w", signal, task.PID, err)
288 }
289
290 // 等待进程退出
291 if timeout > 0 {
292 go tm.waitForProcessExit(task, timeout)
293 }
294
295 // 更新任务状态
296 task.Status = "killed"
297 task.LastUpdate = time.Now()
298 _ = tm.saveTask(task)
299
300 return nil
301}
302
303// ListTasks 列出所有任务
304func (tm *FileTaskManager) ListTasks() ([]*TaskInfo, error) {

Callers

nothing calls this directly

Calls 3

getSignalNumberMethod · 0.95
waitForProcessExitMethod · 0.95
saveTaskMethod · 0.95

Tested by

no test coverage detected