1 #include "lib.h" 2 #include <unistd.h> 3 #include <errno.h> 4 5 int 6 dup(int oldd) 7 { 8 return fcntl(oldd, F_DUPFD, 0); 9 } 10 11 int 12 dup2(int oldd, int newd) 13 { 14 int n; 15 16 if(newd < 0 || newd >= OPEN_MAX){ 17 errno = EBADF; 18 return -1; 19 } 20 if(oldd == newd && _fdinfo[newd].flags&FD_ISOPEN) 21 return newd; 22 close(newd); 23 return fcntl(oldd, F_DUPFD, newd); 24 } 25