dup 函数学习

上个Java项目告一段落了,继续linux c 编程的学习,因为最近的工作和文件操作打交道的比较多,所以,最先就从文件操作开始了。
看到dup和dup2两个函数的时候,按照网上看到的,就有了下面的一段代码:
个人对下面代码的简单解释:
1.fd 为打开文件时返回的文件标识符 因为0,1,2三个已经被系统默认占用,所以,fd为3;
2.再次dup一个标准输出,返回当前可以返回的最小值4;<!--more-->
3.将文件标识符用标准输出替代了,也就时当前的标准输出就是somefile文件。
4.和3差不多,又一次换回来了。

  
  
  
  
  1. #include <stdio.h>  
  2.  #include <stdlib.h>  
  3.  #include <fcntl.h>  
  4.  #include <sys/types.h>  
  5.  #include <sys/stat.h>  
  6.  #include <string.h>  
  7.  #include <unistd.h>  
  8.    
  9.  int main()  
  10.  {  
  11.      int fd,save_fd;  
  12.      char msg[] = "This is a test\n";  
  13.      fd = open("somefile",O_RDWR|O_CREAT,S_IRUSR|S_IWUSR);  
  14.      printf("1.%d\n",fd);  
  15.      if(fd<0)  
  16.      {  
  17.          perror("open");  
  18.          exit(1);  
  19.      }  
  20.      save_fd = dup(STDOUT_FILENO);  
  21.      printf("2.%d\n",save_fd);  
  22.      int fd2 = dup2(fd,STDOUT_FILENO);  
  23.      close(fd);  
  24.      printf("3.%d\n",fd2);  
  25.      write(STDOUT_FILENO,msg,strlen(msg));  
  26.      int fd3 = dup2(save_fd,STDOUT_FILENO);  
  27.      printf("4.%d\n",fd3);  
  28.      write(STDOUT_FILENO,msg,strlen(msg));  
  29.      close(save_fd);  
  30.      return 0;  
  31.  } 

 

你可能感兴趣的:(java,函数,学习,dup)