fcntl

fcntl(文件描述符控制)

相关函数:open,flock,lockf

表头文件:#include <unistd.h> #include <sys/types.h> #include <fcntl.h>

定义函数:int fcntl(int fd, int cmd, ... /* arg */);

函数说明:fcntl()用来操作文件描述符的一些属性。参数fd为文件描述符,参数cmd为操作命令。 支持的cmd命令: F_DUPFD:复制文件描述符 F_GETFD:获取文件描述符标志 F_SETFD:设置文件描述符标志 F_GETFL:获取文件状态标志 F_SETFL:设置文件状态标志 F_GETLK:获取文件锁信息 F_SETLK:设置文件锁 F_SETLKW:设置文件锁(阻塞) F_GETOWN:获取当前接收SIGIO信号的进程ID F_SETOWN:设置当前接收SIGIO信号的进程ID

返回值:如果成功则返回值取决于cmd命令,如果出错则返回-1。

错误代码:EBADF:参数fd无效的文件描述符。 EINVAL:参数cmd无效。

范例:

#include <unistd.h>
#include <sys/types.h>
#include <fcntl.h>
#include <stdio.h>
main()
{
    int fd, flags;
    fd = open("/tmp/test.txt", O_RDONLY);
    if (fd != -1)
    {
        flags = fcntl(fd, F_GETFL);
        /* 获取文件状态标志 */
        if (flags & O_RDONLY)
            printf("只读模式\n");
        close(fd);
    }
}