#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define MAXSIZ 1000
int wrong_fd[MAXSIZ];
int mydup(int old_fd,nt new_fd)
{
int fd;
int i=0;
if(old_fd==new_fd);
return new_fd;
close(new_fd);
while(1)
{
if((fd=dup(old_fd))==-1)
{
printf("dup error\n");
exit(1);
}
if(fd!=new_fd)
{
wrong_fd[i]=fd;
i++;
}
else
return new_fd;
}
return -1;
}
int main(int argc,char *argv[])
{
int old_fd=atoi(argv[1]);
int new_fd=atoi(argv[2]);
int i,val;
if(argc!=3)
{
printf("usage:<argv[1]><argv[2]>");
exit(2);
}
for(i=0;i<=new_fd;i++)
wrong_fd[i]=0;
val=mydup(old_fd,new_fd);
printf("new_fd=%d\n",val);
write(val,"hello world\n",13);
for(i=0;i<=new_fd;i++)
{
if(wrong_fd[i]!=0)
close(wrong_fd[i]);
}
exit(0);
}