#include <unistd.h>

int dup(int oldfd);
int dup2(int oldfd, int newfd);

#define _GNU_SOURCE /* See feature_test_macros(7) */
#include <fcntl.h> /* Obtain O_* constant definitions */
#include <unistd.h>

int dup3(int oldfd, int newfd, int flags);


目的

给旧的文件描述符再添一个文件描述符,两个描述符都能指向同一个文件

​dup()​​: 就给旧的再打开一个文件描述符

​dup2(oldfd, newfd)​​:指定一个新的描述符,新的如果原先有文件,就先关闭

​dup3(oldfd, newfd, flags)​​: 可以指定​​O_CLOEXEC​​标志