dup,dup2
名称:转存(复制)一个文件描述符
总揽:
 #include<unistd.h>
 
 int dup(int oldfd);
 int dup2(int oldfd,int newfd);
描述:
 dup()和dup2()函数用来创建一个文件描述符oldfd的备份.
 执行成功则返回新的文件描述符.旧的文件描述符和新的文件描述符共享文件的偏移量
    和文件的状态标志;例如,若其中一个文件描述符的文件偏移量被lseek()函数修改过的话则
    另外一个文件描述符的文件偏移量也被修改.
 但是两个文件描述符不共享文件描述符标志(close-on-exec标志),转存时该标志被关闭.
 dup()函数使用一个最小的未用的整数作为新文件描述符.
 dup2()函数使用newfd作为新文件描述符,若原来newfd存在则必要时关闭它
返回值:执行成功则返回新的文件描述符,若发生错误则返回-1.
实例:
 #include<unistd.h>
 #include<fcntl.h>
 #include<stdio.h>
 #include<stdlib.h>
 int main(void)
 {
  
  int fd;
  fd=open("test.txt",O_RDWR);
  if(fd==-1){
   perror("Fail to open");
   exit(1);
   }else
   printf("Open Ok\n");
  if(close(1)==-1){
   perror("Fail to close");
   exit(1);}
  if(dup(fd)==-1){  /*将fd复制为1,也就是复制文件到标准输出位置*/
   perror("fail to dup");
   exit(1);}else
   printf("Dup OK\n");
 
  printf("Hello World\n");
  return 0;
 }