系统接口函数详解
1. dup()、dup2() 和 dup3() 函数
1.1 函数概述
dup()、dup2() 和 dup3() 函数用于复制一个已打开的文件描述符。以下是它们的原型:
#include <unistd.h>
int dup(int fildes);
int dup2(int fildes, int fildes2);
int dup3(int fildes, int fildes2, int flag);
1.2 函数功能描述
- dup() :该函数提供了与
fcntl()
函数使用F_DUPFD
命令相同的服务。dup(fildes)
等价于fcntl(fildes, F_DUPFD, 0)
。 - dup2() :使文件描述符
fildes2
引用与文件描述符fildes
相同的打开文件描述,并共享任何锁,最后返回fildes2
。如果fildes2
已经是一个有效的打开文件描述符,则先关闭它,除非fildes
等于fildes2
,此时dup2()
不关闭fi