Saltar al contenido

¿Por qué aparece “cat: write error: Broken pipe” rara vez y no siempre?

Solución:

La razón es porque la tubería está cerrada por grep cuando todavía tiene algunos datos para leer cat. La señal SIGPIPE es atrapado por un gato y sale.

Lo que suele suceder en una tubería es que el shell se ejecuta cat en un proceso y grep en otro. El stdout de cat está conectado al extremo de escritura de la tubería y stdin de grep hasta el final de la lectura. Lo que paso fue grep golpeó una búsqueda de patrón que no existía y salió inmediatamente, lo que provocó que el extremo leído de la tubería se cerrara, lo que cat no le gusta ya que tiene más datos para escribir en la tubería. Dado que las acciones de escritura le suceden a otro que se ha cerrado en el otro extremo, SIGPIPE es atrapado por el cat en el que sale inmediatamente.

Para un caso tan trivial, puede eliminar el uso de la canalización por completo y ejecutarlo como grep "pattern" file.txt cuando el contenido del archivo está disponible sobre el stdin de grep en el que podría leer.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *