进程如何同步你造了么

  前言:线程如何同步应该知道了吧?不知道也没关系,可以参考我的这篇博客:upload/201809261649267581.gif" alt="" style="border: 0px; vertical-align: middle; padding-right: 5px; max-width: 900px; height: auto;" /> View Code

  

  二、文件锁

  1、fcntl函数

  文件锁的实现主要就是通过fcntl函数来实现的,所以先来介绍这个函数。

  功能:借助 fcntl函数来实现锁机制。 操作文件的进程没有获得锁时,可以打开,但无法执行readwrite操作。

  原型:int fcntl(int fd, int cmd, ... /* arg */ );

  参数说明:

  参数1:文件描述符

  参数2:

  F_SETLK (struct flock *) 设置文件锁(相当于trylock,不成功直接返回

 

  F_SETLKW (struct flock *) 设置文件锁(相当于lock,不成功一直阻塞W --> wait

 

  F_GETLK (struct flock *) 获取文件锁

   

  struct flock {

              ...

              short l_type;     锁的类型:F_RDLCK F_WRLCK F_UNLCK

              short l_whence;   偏移位置:SEEK_SETSEEK_CURSEEK_END

              off_t l_start;    起始偏移:1000

              off_t l_len;      长度:0表示整个文件加锁

              pid_t l_pid;      持有该锁的进程ID(F_GETLK only)

              ...

         };

  2、示例程序

  程序如下:

 View Code

  

  总结:喜欢的帮忙推荐一下,在此谢过了;欢迎评论,交流与学习

 

作者:柳德维

-------------------------------------------

个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!

如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

 

万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!https://www.cnblogs.com/liudw-0215/p/9705390.html

50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信