「Linux 系统编程」dup 与 dup2 函数
1 dup 函数
1.1 函数原型
1 |
|
oldfd
: 需要被复制的现有文件描述符
返回值:
-
成功时返回新的文件描述符(当前可用的最小文件描述符),新描述符和
oldfd
指向相同文件。 -
失败时返回 -1 并设置
errno
。
1.2 代码示例
1 |
|
2 dup2 函数
2.1 函数原型
1 |
|
oldfd
: 被复制的现有文件描述符newfd
: 复制到的目标文件描述符
返回值:
-
成功时 返回新的文件描述符(即
newfd
),此时newfd
指向的文件和oldfd
指向的文件是同一个。 -
失败时返回 -1 并设置
errno
2.2 代码示例
1 |
|
3 使用 fcntl 实现 dup 功能
fcntl
函数可以实现 dup 的功能。
1 |
|
其中,cmd
参数使用 F_DUPFD
命令,第 3 个参数设置为 一个整数:
- 如果整数对应文件描述符 被占用,返回当前最小可用的文件描述符;
- 如果整数对应文件描述符 未被占用,返回等于该整数值的文件描述符。
1 |
|
「Linux 系统编程」dup 与 dup2 函数
https://marisamagic.github.io/2025/08/30/20250830/