To execute foo < file > bar &
< file (part 1)
> bar (part 2)
& (part 3)
First fork
Parent
do not do a blocking wait on the child.
Child
part 1
fd = open( file, read)
close (STDIN_FILENO)
dup (fd)
close fd
part 2
fd = open(bar, write, ...)
dup2(fd, STDOUT_FILENO);
close fd
part 4
exec foo