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