- dup2(cfd[0], STDIN_FILENO);
- dup2(rfd[1], STDOUT_FILENO);
- close(cfd[0]);
- close(rfd[1]);
- execlp(server, server, (char *)0);
- child(STDOUT_FILENO, STDIN_FILENO);
+ md[0].cur = cfd[0]; md[0].want = STDIN_FILENO;
+ md[1].cur = rfd[1]; md[1].want = STDOUT_FILENO;
+ if (mdup(md, 2) || execlp(server, server, (char *)0))
+ child(STDOUT_FILENO, STDIN_FILENO);