第五章文件i/o操作之fcntl函数应用及文件上锁
文章目录
前言
Linux是多用户操作系统,多个用户同时使用、操作同一文件的事情时常发生。而文件上锁可以避免对共享资源的竞争,从而发生读写错误。而文件锁分为建议性锁和强制性锁。当一个文件被加上强制性锁之后,内核将阻止对其他用户其进行读写操作
一、fcntl函数的几种用法
获取文件的flags,即open函数的第二个参数
flags = fcntl(fd,F_GETFL,0);
设置文件的flags
fcntl(fd,F_SETFL,flags);
二、应用举例
1.增加文件的某个flags,例如文件原本阻塞,设置为非阻塞
flags = fcntl(fd,F_GETFL,0);//获取文件的flags
flags |= O_NONBLOCK;//非阻塞,或操作(位运算),增加flags
fcntl(fd,F_SETFL,flags);//设置文件的flags
2.取消文件的某个flags,例如文件原本非阻塞,设置为阻塞
flags = fcntl(fd,F_GETFL,0);//获取文件的flags
flags &= ~O_NONBLOCK;//阻塞,先对O_NONBLOCK取反,再与flags与操作(位运算),取消flags
fcntl(fd,F_SETFL,flags);//设置文件的flags
总结
fcntl函数如果运行成功,则返回一个>0的数,否则返回-1.
版权声明:本文为qq_53196560原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。