Aspetta perché non ho capito molto bene. Allora io ho pensato di fare una cosa del genere. Creo una variabile del tipo FILE* fpipe[num_comandi]. Dopo Creo un figlio e poi nel figlio, per ogni comando da eseguire, (quindi facendo per esempio for(i=0; i<num_comandi; ++i) ) lancio la popen di quel comando con il flag w (non conosco la __popen che hai scritto tu). A questo punto cosa dovrei fare? Catturare l'output in un buffer come hai scritto tu? E dopo come faccio a redirezionare questo buffer in input al successivo programma?