fcntl使用的例子 (源自 嵌入式Linux 应用程序开发详解)
2010-05-15 16:19
483 查看
在Linux中,实现文件上锁的函数有lock和fcntl,其中lock用于对文件施加建议性锁,而fcntl不仅可以施加强制性锁,还可以施加建议性锁。同时fcntl还能文件的某一记录进行上锁,也就是记录锁。
记录锁又分为读取锁和写入锁,其中读取锁又称为共享锁。它能使多个进程都能在文件的统一部分建立读取锁。而写入锁又称为排斥锁,在任何时刻只有一个进程在文件的某个部分上建立写入锁。当然文件的统一部分不能同时建立读取锁和写入锁。
强制性锁是由内核执行的锁,当一个文件被上锁进行写入操作时,内核将阻止其他任何文件对其进行读写操作。
int fcntl( int fd, int cmd, struct flock *lock )
fd :文件描述符
cmd:
lock:结构为flock,设置记录锁的具体状态。
返回值:成功:0
-1,出错。
struck flock{
short l_type;
off_t l_start;
short l_whence;
off_t l_len;
pid_t l_pid;
}
l_type : F_RDLCK F_WRLCK F_UNLCK
l_stat :相对位移量
l_whence : SEEK_SET SEEK_END SEEK_CUR
l_len : 加锁区域的长度;
为了加锁整个文件,通常的方法是将l_start说明为0,l_whence 说明为SEEK_SET.l_len 说明为0。
记录锁又分为读取锁和写入锁,其中读取锁又称为共享锁。它能使多个进程都能在文件的统一部分建立读取锁。而写入锁又称为排斥锁,在任何时刻只有一个进程在文件的某个部分上建立写入锁。当然文件的统一部分不能同时建立读取锁和写入锁。
强制性锁是由内核执行的锁,当一个文件被上锁进行写入操作时,内核将阻止其他任何文件对其进行读写操作。
int fcntl( int fd, int cmd, struct flock *lock )
fd :文件描述符
cmd:
lock:结构为flock,设置记录锁的具体状态。
返回值:成功:0
-1,出错。
struck flock{
short l_type;
off_t l_start;
short l_whence;
off_t l_len;
pid_t l_pid;
}
l_type : F_RDLCK F_WRLCK F_UNLCK
l_stat :相对位移量
l_whence : SEEK_SET SEEK_END SEEK_CUR
l_len : 加锁区域的长度;
为了加锁整个文件,通常的方法是将l_start说明为0,l_whence 说明为SEEK_SET.l_len 说明为0。
相关文章推荐
- 嵌入式Linux应用程序开发详解教程含源代码例子
- 嵌入式LINUX应用程序开发详解
- 嵌入式Linux应用程序开发详解
- 嵌入式Linux应用程序开发详解学习总结
- 使用eclipse 开发 嵌入式Linux驱动(注意事项)(make:***没有规则可言创建目标"all".停止 的解决方法)
- 【iOS开发必收藏】详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!【2012-12-11日更新获取"产品付费数量等于0的问题"】
- 部署到Linux使用VS Code 开发.NET Core 应用程序
- linux应用程序开发(第2版),创建和使用库章节中共享库的测试(摘录)
- 【iOS开发必收藏】详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!【2012-6-25日更新iap恢复详解】
- 嵌入式Linux之我行——2440按键驱动实例开发详解(带去抖动)
- 基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南四——使用 GDI 函数
- 嵌入式Linux之我行——2440按键驱动实例开发详解(带去抖动)
- 详解linux,macos下批处理精要 grep,sed,find,正则,管道等结合使用例子
- 【嵌入式linux】(第六步):使用eclipse集成开发环境开发第一个嵌入式Linux程序,并测试LED驱动
- 嵌入式Linux应用程序开发标准教程
- u-boot 分析- [嵌入式Linux系统开发技术详解-基于ARM]2
- 【iOS开发必收藏】详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!【2012-12-11日更新获取"产品付费数量等于0的问题"】
- 【iOS开发必收藏】详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!
- 使用ARM标准C库进行嵌入式应用程序开发
- [嵌入式学习资料]ARM嵌入式开发学习详解4412开发板使用手册-600余页资料