首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

《UNIX环境高级编程》札记-fcntl函数

2013-09-15 
《UNIX环境高级编程》笔记--fcntl函数fcntl函数可以改变或者查看已打开文件的性质。该函数的定义如下:#includ

《UNIX环境高级编程》笔记--fcntl函数

fcntl函数可以改变或者查看已打开文件的性质。该函数的定义如下:

#include <stdio.h>#include <fcntl.h>int main(void){        int result = 0;        int fd = -1, val;        if((fd = open("a.txt", O_RDWR|O_APPEND))<0){                perror("open");                result = -1;                goto FINALLY;        }        if((val = fcntl(fd,F_GETFL))<0){                perror("fcntl");                result = -1;                goto FINALLY;        }        switch(val & O_ACCMODE){        case O_RDONLY:                printf("read only");                break;        case O_WRONLY:                printf("write only");                break;        case O_RDWR:                printf("read write");                break;        default:                printf("unknown access mode");                break;        }        if(val & O_APPEND){                printf(",append");        }else if(val & O_NONBLOCK){                printf(",nonblock");        }        printf("\n");FINALLY:        if(fd >= 0){                close(fd);        }        return result;}
运行结果:

read write,append


F_SETFL和F_SETFD的使用方法差不多,先F_GETFL文件状态,然后使用|=设置想要的状态,最后再F_SETFL设置回去。


F_GETOWN:取当前接受SIGIO和SIGURG信号的进程ID和进程组ID。这两种信号会在以后介绍异步IO时说明。

F_SETOWN:设置接受SIGIO和SIGURG信号的进程ID和进程组ID。正的arg指定一个进程ID,负的arg表示等于arg绝对值

的一个进程组ID。

热点排行