Sì, secondo me la cosa più semplice (che poi puoi eventualmente evolvere) è di avere due pipe
int pipe_0[2];
int pipe_1[2];
e nel for, in corrispondenza del processo figlio (copio da
http://pubs.opengroup.org/onlinepubs/9699919799/functions/pipe.html)
if(i==0)
{
close(pipe_0[0]); /* Read end is unused */
write(pipe_0[1], "Hello world 0\n", 14); /* Write data on pipe */
close(pipe_0[1]); /* EOF */
exit(EXIT_SUCCESS);
}
else
{
close(pipe_1[0]); /* Read end is unused */
write(pipe_1[1], "Hello world 1\n", 14); /* Write data on pipe */
close(pipe_1[1]); /* EOF */
exit(EXIT_SUCCESS);
}