implemented pipe(2)