En un ejercicio de la universidad nos piden que digamos las diferencias entre implementar una orden con "ls > tmp; grep -c < tmp" e implementarla con "ls | grep -c" haciendo uso de llamadas al sistema.
Según lo poco que se de bash, lo que veo es que la pipe sería una forma más "limpia" de hacerlo ya que se encarga de pasar la salida del comando ls al siguiente proceso, no teniendo que armar ningún jaleo con archivos temporales de por medio. Aunque dicha respuesta me parece muy obvia, estoy seguro de que no irán por ahi los tiros, ya que lo preguntan diciendo que se hace mediante llamadas al sistema.
Según lo que he visto en los apuntes (todavía me queda por leer algo) lo que he podido ver es que la pipe usará las llamadas fork() y dup() basicamente mientras que hacerlo con el archivo temporal implica crear archivos, escribir, leer, etc.
Creeis que van por ahí los tiros?