#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main(void)
{
int pfds[2];
int pfds2[2];
pipe(pfds);
pipe(pfds2);
if (!fork()){
if (!fork()) {
close(1); /* close normal stdout */
dup(pfds[1]); /* make stdout same as pfds[1] */
close(pfds[0]); /* we don't need this closes up input side of pipe*/
execlp("cat", "cat","/etc/passwd", NULL);
} else {
close(0); /* close normal stdin */
dup(pfds[0]); /* make stdin same as pfds[0] */
close(pfds[1]); /* we don't need this closes up output side of pipe*/
execlp("cut", "cut", "-f1","-d:", NULL);
}
}else{
close(0); /* close normal stdin */
dup(pfds2[0]); /* make stdin same as pfds[0] */
close(pfds2[1]); /* we don't need this closes up output side of pipe*/
execlp("sort", "sort", NULL);
}
return 0;
}