Corral es una herramienta de línea de comandos para Linux diseñada para garantizar que todos los procesos iniciados por un comando específico terminen correctamente antes de que el script principal retorne. A diferencia de los ejecutores estándar, como 'timeout' o los runners de agentes de IA, corral verifica explícitamente la muerte de cada descendiente del proceso, evitando que se queden huérfanos y consuman recursos como puertos, archivos o CPU.
El software opera en dos modos principales: 'enforced' y 'fallback'. En modo enforced, el comando se ejecuta dentro de un grupo de control de procesos (cgroup v2) propio; el kernel gestiona la limpieza de estos procesos mediante una escritura en cgroup.kill. En modo fallback, corral actúa como subreaper, utilizando /proc y pidfds para identificar y terminar procesos huérfanos. Esta distinción es crucial para casos donde los procesos ignoran señales, mantienen conexiones abiertas o se bifurcan múltiples veces, situaciones en las que los métodos tradicionales de señalización fallan.
Corral requiere Linux 5.11 o superior (5.14 para modo enforced) y está disponible para x86-64 con glibc 2.36. Aunque ofrece límites de memoria y número de procesos, no es un sandbox de seguridad, ya que no restringe el acceso a archivos, red ni privilegios. La herramienta genera registros JSON detallados de cada ejecución, incluyendo el código de salida y los tiempos de cada paso, lo que facilita la auditoría de fallos. Sus benchmarks indican que, en comparación con otros ejecutores, corral logra una limpieza completa de procesos en la mayoría de los escenarios de estrés, aunque su rendimiento en la detección de procesos no hijos puede variar según la configuración del sistema.
