Pues en los ejemplos que pones, bastaría con que tu aplicación lea desde la entrada estándar (ya que eso es lo que hace |: reasignar la salida estándar del programa de la izquierda y la entrada estándar del programa de la derecha).
Te recomiendo buscar "read from pipe", en este hilo hay algunos ejemplos:
http://www.unix.com/programming/3207...read-pipe.html