• 函数原型
  • dup,dup2
  • dup2,fcntl

    复制文件描述符号

    函数原型

    1. #include <unistd.h>
    2. int dup(int oldfd);
    3. int dup2(int oldfd, int newfd);

    另外还有dup3(),不常用。

    dup,dup2

    • dup参数是一个文件描述符,返回一个文件描述符,值是当前未使用的最小数字,指向的位置和参数相同。
    • dup2,可以自己指定要返回的文件描述的数值newfd,如果newfd是一个已经打开的文件描述符,则会将其关闭。

    dup2,fcntl

    1. dup2(fd,fd2);
    2. //等价于
    3. close(fd2);
    4. fcntl(fd,F_DUPFD,fd2);

    功能上可以等价于close()和fcntl()的组合,但是dup2是一个原子操作(关闭fd2,和复制fd不会被中断)。