Manejo de señales y recolección de procesos huérfanos para procesos de inicio PID1 de Unix. Esta biblioteca/ejecutable detectará automáticamente si se ejecuta como un proceso distinto de PID1 y, de ser así, utilizará una simple llamada al sistema exec. pid1 es un ejecutable especializado que desempeña el papel de proceso inicial [PID 1] en espacios de nombres aislados como contenedores o al inicio del sistema tradicionalmente es init [SysVinit, systemd, OpenRC, etc.], pero que también puede usarse como un simple wrapper en un shell normal. Su comportamiento y utilidad cambian radicalmente dependiendo del contexto en el que se ejecute.
Un ejemplo en una terminal, pid1 detecta que no es el PID 1 real del sistema. En este caso, su comportamiento es muy simple llamará al sistema exec:
$ pid1 -u USER -t 5 htop
$ pid1 -w ~/proyecto git status
Un ejemplo en un contenedor Docker minimalista:
FROM debian:bookworm-slim
COPY mi-aplicacion /usr/local/bin/
CMD ["pid1", "-t", "30", "mi-aplicacion"]
Aquí, "pid1" será el PID 1 dentro del contenedor. Si mi-aplicacion crea hijos y luego crashea, pid1 se asegurará de limpiar esos hijos.