linux程序设计下fcntl函数

  • Post author:
  • Post category:linux

第五章文件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 版权协议,转载请附上原文出处链接和本声明。