Tente isso
loud_program | grep --max-count=NUM
então, de acordo com meu conhecimento limitado, loud_program
recebe SIGPIPE
porque está gravando em uma extremidade desconectada, que por sua vez pode terminar loud_program
. Experimente com o seu programa, não tenho certeza se isso funciona para todos os programas.