1234567891011121314151617181920 |
- #include <unistd.h>
- #include <errno.h>
- #include <fcntl.h>
- #include "syscall.h"
- int dup2(int old, int new)
- {
- int r;
- #ifdef SYS_dup2
- while ((r=__syscall(SYS_dup2, old, new))==-EBUSY);
- #else
- if (old==new) {
- r = __syscall(SYS_fcntl, old, F_GETFD);
- if (r >= 0) return old;
- } else {
- while ((r=__syscall(SYS_dup3, old, new, 0))==-EBUSY);
- }
- #endif
- return __syscall_ret(r);
- }
|