Index: sys_pipe.c =================================================================== --- sys_pipe.c (revision 238946) +++ sys_pipe.c (working copy) @@ -1306,6 +1306,14 @@ pipeunlock(wpipe); PIPE_UNLOCK(rpipe); + + if (rpipe->pipe_state & PIPE_NAMED && error == EPIPE && + uio->uio_resid != orig_resid) { + error = 0; + PROC_LOCK(td->td_proc); + tdsignal(td, SIGPIPE); + PROC_UNLOCK(td->td_proc); + } return (error); }