Files
fn_registry/functions/infra/process_kill.md
T
egutierrez 7aa7790931 feat: add process manager and execution store types (0007b, 0007c)
Process spawn/wait/kill functions for subprocess management with output
capture, timeout, and process group cleanup. DagRun and DagStepResult
types for SQLite execution persistence.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 13:05:13 +02:00

46 lines
1.6 KiB
Markdown

---
name: process_kill
kind: function
lang: go
domain: infra
version: "1.0.0"
purity: impure
signature: "func ProcessKill(handle *ProcessHandle, graceSec int) error"
description: "Termina un subproceso enviando SIGTERM al process group. Espera hasta graceSec segundos a que el proceso muera voluntariamente. Si sigue vivo, envia SIGKILL. Retorna error solo si la senal no pudo entregarse."
tags: [process, subprocess, kill, signal, sigterm, sigkill, infra]
uses_functions: []
uses_types: [process_handle_go_infra]
returns: []
returns_optional: false
error_type: "error_go_core"
imports: [fmt, syscall, time]
params:
- name: handle
desc: "handle del proceso lanzado por ProcessSpawn"
- name: graceSec
desc: "segundos de gracia entre SIGTERM y SIGKILL; 0 envia SIGKILL inmediatamente"
output: "nil si el proceso fue terminado correctamente; error si la senal no pudo entregarse"
tested: true
tests:
- "kill process"
test_file_path: "functions/infra/process_spawn_test.go"
file_path: "functions/infra/process_kill.go"
---
## Ejemplo
```go
h, err := ProcessSpawn("sleep 300", "", nil, "")
if err != nil {
log.Fatal(err)
}
// Dar 3 segundos de gracia antes de SIGKILL
if err := ProcessKill(h, 3); err != nil {
log.Printf("kill failed: %v", err)
}
```
## Notas
Funcion impura: envia senales al sistema operativo. Usa -handle.Pid (negativo) para direccionar el process group completo, matando tanto al proceso principal como a sus hijos. ESRCH se ignora porque significa que el proceso ya murio, lo cual es el objetivo deseado. Comprueba si el proceso sigue vivo con signal 0 (kill -0) cada 100ms durante el grace period.