本文最后更新于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函数用法说明相关推荐

  1. linux汇编语言cmp,汇编语言中cmp指令用法笔记与总结

    这篇文章主要介绍了汇编语言中cmp指令用法,结合实例形式总结分析了汇编语言cmp指令基本功能.使用方法及操作注意事项,需要的朋友可以参考下 本文实例讲述了汇编语言中cmp指令用法.分享给大家供大家参考 ...

  2. c语言if函数括号内大于零,c语言中if函数后面的小括号内能写2个判断条件吗?...

    c语言中if函数后面的小括号内可以写2个判断条件: if(a==b||b==c): if(a==d&&b==c): if判断语句的作用:就是当满足一定条件时才会执行那块代码,否则就不执 ...

  3. c语言rand函数的作用,详解C语言中rand函数的使用

    前言 我们在编程实现算法的过程中,往往需要使用到随机数.由于计算机是一台以逻辑为基础的机器,没法做到真正的随机(大概量子计算机可以?).所以计算机生成的是伪随机数,供我们使用. 我们使用C语言的ran ...

  4. c语言getchar函数的作用,c语言中getchar的用法函数用法

    当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止.下面小编就跟你们详细介绍下c语言中getchar的用法,希望对你们有用. c语言中getchar ...

  5. map函数作用c语言,c语言中map的用法:map基本用法

    c++中map容器提供一个键值对容器,那么你知道map的用法有哪些吗,下面秋天网 Qiutian.ZqNF.Com小编就跟你们详细介绍下c语言中map的用法,希望对你们有用. c语言中map的用法:m ...

  6. c语言time函数的作用,c语言中time函数的用法

    c语言中time函数的用法 c语言中time函数的用法的用法你知道吗?下面应届毕业生小编就跟你们详细介绍下c语言中time函数的用法的用法,希望对你们有用. c语言中time函数的用法的用法如下: 头 ...

  7. c语言中void函数,c语言中void的用法

    c语言中void的用法的用法你知道吗?下面小编就跟你们详细介绍下c语言中void的用法的用法,希望对你们有用. c语言中void的用法的用法如下: void指针是什么? void指针一般被称为通用指针 ...

  8. linux c语言 getline,C语言中getline()函数的深入理解

    我在网上搜了半天getline()函数,大多针对C++的,重载函数比较多,云里雾里的,而且没有实例,反正就是没有自己所需要的getline()函数.所以,自己在Linux下man了一把,并做了测试.g ...

  9. C语言一定要有函数声明吗,1 什么是C语言的隐式函数声明在C语言中,函数在调用前不一定非要声明。如果没有声明,那么编译器会自动按照一种隐式声明的规则,为调用函数的C代码产生汇编代码。下...

    1 什么是C语言的隐式函数声明 在C语言中,函数在调用前不一定非要声明.如果没有声明,那么编译器会自动按照一种隐式声明的规则,为调用函数的C代码产生汇编代码.下面是一个例子: int main(int ...

最新文章

  1. java第一阶段知识_坚持:学习Java后台的第一阶段,我学习了那些知识
  2. RE:大家说说开发的时候类名和文件名一般是怎么规范的?
  3. 【渝粤教育】电大中专测量学作业 题库
  4. 微信新的用户信息接口wx.getUserProfile,返回信息解密失败
  5. 计算机显卡960,2015显卡开年之作!NVIDIA GTX960首测
  6. 临床必备 | 第 5 期全基因组/外显子组家系分析理论和实战
  7. 前端开源项目周报0214
  8. 关键词提取_tf_idf
  9. H265播放器EasyPlayer测试demo停顿后实现自动重连的优化分享
  10. matlab中的uigetfile函数和setappdata函数
  11. vscode中文vsix_离线安装vscode vsix插件
  12. 瞬变抑制二极管TVS原理简介
  13. IT新人的辛酸反省与总结
  14. 【王道】计算机组成原理第三章存储系统(三)
  15. 《MacTalk 跨越边界》一一1.2 人生如摆摊
  16. [原创]黑产在IP攻防上的挣扎与进化
  17. 【Vue 组件化开发 三】父组件给子组件传递数据、组件通信(父传子、子传父)、父访问子(children、ref)、动态组件(is、component)
  18. Thinkphp整合微信支付功能
  19. Schema_CN28_CNNG净薪酬计算
  20. iscroll.js

热门文章

  1. 工程经济作业1答案_2015年一级建造师铁路工程真题及答案1
  2. VUE3模板ref引用子组件或者子组件的方法
  3. javascript之正则表达式
  4. linux 挂载u盘考试,Linux 挂载U盘,与解挂
  5. python 京东签到在哪里_python 使用selenium登陆京东签到哪京豆
  6. c语言学习-判断一个年份是否闰年
  7. [Unity脚本运行时更新]C#5新特性
  8. Leecode刷题热题HOT100(6)——Z 字形变换
  9. OpenShift 4 - DevSecOps Workshop (2) - 运行一个基于Tekton的Pipeline示例
  10. 11 月全球 Web 服务器调查报告:nginx 表现最佳