/*
3,2
*/
int my_dup2(int fd1,int fd2){
if (fd2<0||fd2 > OPENMAX){
err_sys("wrong input newfd");
exit(0);
}
if (fd1==fd2){
return fd2;
}
int min = dup(fd1);//寻找当前最小的文件表项
if (min==-1){
err_sys("dup error!");
exit(0);
}
close(fd2); //关闭新文件表项
int val;
while (1)
{
val = dup(fd1);
if (val==-1){
err_sys("dup error!");
exit(0);
}
if (val == fd2){
while (val!=min)
{
close(min++);//关掉 min到目标文件表项之前的所有文件表项
}
return fd2;
}
}
}