linux/unix系统编程手册——fcntl()

  1. fcntl()必须针对一个打开的文件,才能进行其操作,它可以获取或修改文件的模式及状态标志;

  2. 获取文件的访问模式,
    int flags;
    flags = fcntl ( fd, F_GETFL ) ;

  3. 但如果要获取的状态位是:O_RDONLY,O_WRONLY,O_RDWR,必须先通过和掩码O_ACCMODE进行"&"运算,如下:
    accessMode = flags & O_ACCMODE;
    if (accessMode == O_WRONLY || accessMode == O_RDWR) {
    printf(“file is writable\n”);
    }

  4. fcntl主要适用于不是由当前调用程序打开的,例程如下:
    int flags;
    flags = fcntl(fd, F_GETFL);
    if (flags & O_ASYNC) {
    printf(“open type#: O_ASYNC\n”);
    }

    flags |= O_APPEND;
    flags = fcntl(fd, F_GETFL);
    if (flags & O_APPEND) {
    printf(“open type#: O_APPEND\n”);
    }

你可能感兴趣的:(linux)