Důvodem je, že potrubí je uzavřeno grep když má ještě nějaká data ke čtení z cat . Signál SIGPIPE je chycen kočkou a odejde.
Co se obvykle děje v potrubí je, že shell běží cat v jednom procesu a grep v jiném. Standardní hodnota cat je připojen k zapisovacímu konci roury a stdin grep do konce čtení. Stalo se grep zasáhlo hledání vzoru, které neexistovalo a okamžitě skončilo, což způsobilo uzavření čteného konce potrubí, což cat nelíbí, protože má nějaká další data k zápisu do roury. Protože se akce zápisu odehrávají na jiném konci, který byl uzavřen, SIGPIPE je zachycen kódem cat na kterém okamžitě vystoupí.
V takovém triviálním případě můžete použití kanálu zcela odstranit a spustit jej jako grep "pattern" file.txt když je obsah souboru zpřístupněn přes stdin grep ze kterého by to mohlo číst.