|
用于对一个已经打开的文件描述符执行一系列控制操作,比如复制一个文件描述符(与 dup、dup2 作用相同)、获取/设置文件描述符标志、获取/设置文件状态标志等。 1.头文件 #include <unistd.h> #include <fcntl.h> 2.函数原型 int fcntl(int fd, int cmd, ...) 3.参数 fd:表示要操作文件的文件描述符。 cmd:操作命令。cmd 操作命令大致可以分为以下 5 种功能: ⚫复制文件描述符(cmd=F_DUPFD 或 cmd=F_DUPFD_CLOEXEC); ⚫获取/设置文件描述符标志(cmd=F_GETFD 或 cmd=F_SETFD); ⚫获取/设置文件状态标志(cmd=F_GETFL 或 cmd=F_SETFL); ⚫获取/设置异步 IO 所有权(cmd=F_GETOWN 或 cmd=F_SETOWN); ⚫获取/设置记录锁(cmd=F_GETLK 或 cmd=F_SETLK); …:表示附加可变参数,需要根据不同的cmd来传入对应的实参,配合cmd来使用。。 4.返回值 执行失败情况下,返回-1,并且会设置errno;执行成功的情况下,其返回值与cmd(操作命令)有关,譬如cmd=F_DUPFD(复制文件描述符)将返回一个新的文件描述符、cmd=F_GETFD(获取文件描述符标志)将返回文件描述符标志、cmd=F_GETFL(获取文件状态标志)将返回文件状态标志等。 1.3.9.2 ioctl用于操作特殊文件或硬件外设,需结合内核驱动,目前不需深入了解。 1.头文件 #include <sys/ioctl.h> 2.函数原型 int ioctl(int fd, unsigned long request, ...); 3.参数 fd:表示要操作文件的文件描述符。 request:此参数与具体要操作的对象有关,没有统一值。 4.返回值 若函数调用成功返回 0,失败返回-1。
|