c 如何加函数锁linux,Linux下C语言中fcntl函数用法说明
本文最后更新于2017年8月18日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢!
=Start=
缘由:
学习、提高需要
正文:
参考解答:
fcntl – manipulate file descriptor (操作文件描述符)
fcntl()函数主要有5种功能:
复制一个现有的描述符(cmd=F_DUPFD/F_DUPFD_CLOEXEC)
获得/设置文件描述符标记(cmd=F_GETFD/F_SETFD)
获得/设置文件状态标记(cmd=F_GETFL/F_SETFL) #常用
获得/设置异步I/O所有权(cmd=F_GETOWN/F_SETOWN)
获得/设置记录锁(cmd=F_GETLK/F_SETLK/F_SETLKW) #常用
获取、设置文件状态标记样例:
&
&
常见用法就是——将socket fd设置为非阻塞模式:
获取、设置文件锁样例:
先在一个终端执行程序:
$ ./a.out
lock success
press any key to unlock
现在文件已经被锁住了,而且没有按下任何按键,所以卡在这里,也还没解锁,接着在另一个终端再次执行同一个程序:
$ ./a.out
lock fail: Resource temporarily unavailable
会立即返回错误,因为我们希望施加的是排他锁,而现在前面一个进程正在占用写锁还没释放,所以尝试施加锁失败,而如果fcntl()函数的cmd设置为 F_SETLKW,即带w的版本,则此进程会一直阻塞直到前面一个进程释放了锁。
参考链接:
=END=
c 如何加函数锁linux,Linux下C语言中fcntl函数用法说明相关推荐
- linux汇编语言cmp,汇编语言中cmp指令用法笔记与总结
这篇文章主要介绍了汇编语言中cmp指令用法,结合实例形式总结分析了汇编语言cmp指令基本功能.使用方法及操作注意事项,需要的朋友可以参考下 本文实例讲述了汇编语言中cmp指令用法.分享给大家供大家参考 ...
- c语言if函数括号内大于零,c语言中if函数后面的小括号内能写2个判断条件吗?...
c语言中if函数后面的小括号内可以写2个判断条件: if(a==b||b==c): if(a==d&&b==c): if判断语句的作用:就是当满足一定条件时才会执行那块代码,否则就不执 ...
- c语言rand函数的作用,详解C语言中rand函数的使用
前言 我们在编程实现算法的过程中,往往需要使用到随机数.由于计算机是一台以逻辑为基础的机器,没法做到真正的随机(大概量子计算机可以?).所以计算机生成的是伪随机数,供我们使用. 我们使用C语言的ran ...
- c语言getchar函数的作用,c语言中getchar的用法函数用法
当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止.下面小编就跟你们详细介绍下c语言中getchar的用法,希望对你们有用. c语言中getchar ...
- map函数作用c语言,c语言中map的用法:map基本用法
c++中map容器提供一个键值对容器,那么你知道map的用法有哪些吗,下面秋天网 Qiutian.ZqNF.Com小编就跟你们详细介绍下c语言中map的用法,希望对你们有用. c语言中map的用法:m ...
- c语言time函数的作用,c语言中time函数的用法
c语言中time函数的用法 c语言中time函数的用法的用法你知道吗?下面应届毕业生小编就跟你们详细介绍下c语言中time函数的用法的用法,希望对你们有用. c语言中time函数的用法的用法如下: 头 ...
- c语言中void函数,c语言中void的用法
c语言中void的用法的用法你知道吗?下面小编就跟你们详细介绍下c语言中void的用法的用法,希望对你们有用. c语言中void的用法的用法如下: void指针是什么? void指针一般被称为通用指针 ...
- linux c语言 getline,C语言中getline()函数的深入理解
我在网上搜了半天getline()函数,大多针对C++的,重载函数比较多,云里雾里的,而且没有实例,反正就是没有自己所需要的getline()函数.所以,自己在Linux下man了一把,并做了测试.g ...
- C语言一定要有函数声明吗,1 什么是C语言的隐式函数声明在C语言中,函数在调用前不一定非要声明。如果没有声明,那么编译器会自动按照一种隐式声明的规则,为调用函数的C代码产生汇编代码。下...
1 什么是C语言的隐式函数声明 在C语言中,函数在调用前不一定非要声明.如果没有声明,那么编译器会自动按照一种隐式声明的规则,为调用函数的C代码产生汇编代码.下面是一个例子: int main(int ...
最新文章
- java第一阶段知识_坚持:学习Java后台的第一阶段,我学习了那些知识
- RE:大家说说开发的时候类名和文件名一般是怎么规范的?
- 【渝粤教育】电大中专测量学作业 题库
- 微信新的用户信息接口wx.getUserProfile,返回信息解密失败
- 计算机显卡960,2015显卡开年之作!NVIDIA GTX960首测
- 临床必备 | 第 5 期全基因组/外显子组家系分析理论和实战
- 前端开源项目周报0214
- 关键词提取_tf_idf
- H265播放器EasyPlayer测试demo停顿后实现自动重连的优化分享
- matlab中的uigetfile函数和setappdata函数
- vscode中文vsix_离线安装vscode vsix插件
- 瞬变抑制二极管TVS原理简介
- IT新人的辛酸反省与总结
- 【王道】计算机组成原理第三章存储系统(三)
- 《MacTalk 跨越边界》一一1.2 人生如摆摊
- [原创]黑产在IP攻防上的挣扎与进化
- 【Vue 组件化开发 三】父组件给子组件传递数据、组件通信(父传子、子传父)、父访问子(children、ref)、动态组件(is、component)
- Thinkphp整合微信支付功能
- Schema_CN28_CNNG净薪酬计算
- iscroll.js
热门文章
- 工程经济作业1答案_2015年一级建造师铁路工程真题及答案1
- VUE3模板ref引用子组件或者子组件的方法
- javascript之正则表达式
- linux 挂载u盘考试,Linux 挂载U盘,与解挂
- python 京东签到在哪里_python 使用selenium登陆京东签到哪京豆
- c语言学习-判断一个年份是否闰年
- [Unity脚本运行时更新]C#5新特性
- Leecode刷题热题HOT100(6)——Z 字形变换
- OpenShift 4 - DevSecOps Workshop (2) - 运行一个基于Tekton的Pipeline示例
- 11 月全球 Web 服务器调查报告:nginx 表现最佳