EPIPE (errno 32)

errno 32

LINUX

Mensaje oficial (tal como aparece en pantalla): Broken pipe

También se busca como: Broken pipe, errno 32, EPIPE broken pipe, write EPIPE

Terminal de Linux ejecutando strace con la llamada al sistema fallida y el errno resaltados
errno de Linux: rastrea la llamada al sistema que falla antes de cambiar nada.

Qué significa

EPIPE, 'Broken pipe' (errno 32), significa que un programa escribió en una tubería o socket cuyo extremo de lectura ya está cerrado. Las canalizaciones de la shell lo ven cuando el siguiente comando termina antes (por ejemplo 'head'), y los servidores lo ven cuando un cliente se desconecta antes de que se envíe la respuesta.

Se aplica a: Linux, macOS (BSD errno), WSL, Contenedores Docker

Cómo solucionar EPIPE (errno 32)

  1. En canalizaciones de la shell, un broken pipe tras 'head' o 'grep -q' es esperable y normalmente inofensivo
  2. Para desconexiones SSH con 'Broken pipe', añade 'ServerAliveInterval 60' a ~/.ssh/config para mantener vivas las sesiones inactivas
  3. En servidores, trata EPIPE como una desconexión normal del cliente: deja de escribir y cierra la conexión
  4. En Python, captura BrokenPipeError; en Node.js, gestiona los eventos 'error' de los streams para evitar cierres inesperados
  5. Si EPIPE ocurre en una conexión con una base de datos o un servicio ascendente, revisa los tiempos de inactividad de ese lado y activa keep-alive o lógica de reconexión
  6. Si los programas mueren sin avisar, recuerda que SIGPIPE termina los procesos por defecto; ignóralo ('signal(SIGPIPE, SIG_IGN)') y comprueba los errores de escritura en su lugar

Por qué ocurre

Escribir en una tubería o en un socket de flujo sin lector genera SIGPIPE y EPIPE. Las causas habituales son lectores que terminan antes, clientes que se desconectan, tiempos de espera en el lado remoto y dispositivos de red intermedios que cierran conexiones inactivas.

Preguntas frecuentes

¿Por qué SSH dice 'Broken pipe'?

La conexión estuvo inactiva o la red se cayó, y el servidor o un router la cerró. Los ajustes de keep-alive en la configuración de SSH evitan la mayoría de los casos.

Errores relacionados

Fuente: Linux kernel errno.h · soluciones redactadas y revisadas por los editores (consulta nuestra política editorial)

Última actualización: