fcntl函数
读法:file control函数
作用:复制文件描述符、设置/获取文件的状态标志
int fcntl(int fd, int cmd, ... /* arg */ )
fd是文件描述符,cmd是命令(定义的宏),… 表示可变的参数(可有可不有)
man 2 fcntl
DESCRIPTION:
fcntl() performs one of the operations described below on the open file descriptor fd. The operation is determined by cmd.
1、Duplicating a file descriptor 复制文件描述符
-
F_DUPFD (int)
Duplicate the file descriptor fd using the lowest-numbered available file descriptor greater than or equal to arg. This is different from dup2(2), which uses exactly the file descriptor specified. (dup2复制指定的fd,而F_DUPFD用的是lowerst)On success, the new file descriptor is returned. -
F_DUPFD_CLOEXEC (int; since Linux 2.6.24)
2、 File descriptor flags 文件描述标志
The following commands manipulate the flags associated with a file descriptor. Currently, only one such flag is defined: FD_CLOEXEC, the close-on-exec flag. If the FD_CLOEXEC bit is set, the file descriptor will automatically be closed during a successful execve(2). (If the execve(2) fails, the file descriptor is left open.) If the FD_CLOEXEC bit is not set, the file descriptor will remain open across an execve(2).
-
F_GETFD (void)
-
F_SETFD (int)
3、 File status flags 文件状态标志
Each open file description has certain associated status flags, initialized by open(2) and pos