当前位置: 首页 > news >正文

农场游戏系统开发 网站建设推广百度快速排名用什

农场游戏系统开发 网站建设推广,百度快速排名用什,asp网站banner修改,重庆网站建设制作设计为了解决多个进程同时操作一个文件,产生一些情况,通常对文件进行上锁,已解决对共享文件的竞争 对打开文件进行各种操作: int fcentl(int fd, int cmd, .../*arg*/如果cmd与锁操作有关,那么fcentl函数的第三个参数就要…

为了解决多个进程同时操作一个文件,产生一些情况,通常对文件进行上锁,已解决对共享文件的竞争

对打开文件进行各种操作:

int fcentl(int fd, int cmd, .../*arg*/

如果cmd与锁操作有关,那么fcentl函数的第三个参数就要传入一个结构体

在这里插入图片描述
在这里插入图片描述
其中结构体如下:

 struct flock {...short l_type;    /* Type of lock: F_RDLCK,F_WRLCK, F_UNLCK */short l_whence;  /* How to interpret l_start:SEEK_SET, SEEK_CUR, SEEK_END */off_t l_start;   /* Starting offset for lock */off_t l_len;     /* Number of bytes to lock */pid_t l_pid;     /* PID of process blocking our lock(F_GETLK only) */...};

在这里插入图片描述
在这里插入图片描述

利用fcntl函数解决两个终端同时写访问一个文件产生的竞争问题:

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/file.h> int lock_set(int fd, int type){struct flock old_lock, lock;lock.l_whence = SEEK_SET; //加锁区域为文件开始处 lock.l_start = 0;//加锁区域在文件位置的相对偏移量 lock.l_len = 0;//加锁区域长度 lock.l_type = type;//锁的类型 lock.l_pid = -1;fcntl(fd, F_GETLK, &lock);//写入if(lock.l_type != F_UNLCK){//若未解锁 if(lock.l_type == F_RDLCK){//读取锁 printf("Read lock already set by %d\n", lock.l_pid);}else if(lock.l_type == F_WRLCK){printf("Write lock already set by %d\n", lock.l_pid);} } /*上述可能由于不是解锁状态l_type被设置成了相应的锁值下方进行上锁操作时要再次调用type*/ lock.l_type = type;if((fcntl(fd, F_SETLKW, &lock)) < 0){//上锁失败 printf("Lock failed:type  = %d\n", lock.l_type);return -1;}switch(lock.l_type){case F_RELCK:printf("Read lock set by %d\n", getpid());//获取当前进程的IDbreak;case F_WRLCK:printf("Write lock set by %d\n", getpid());break;case F_UNLCK:printf("Release lock by %d\n", getpid());//解锁返回1 return 1;break; }return 0;//上锁返回0 
}int main(int argc, const char * argv[]){int fd;if((fd = open("test.txt", O_RDWR)) < 0){printf("open error\n");return -1;}lock_set(fd, F_WRLCK);//设置写入锁getchar();//等待响应 lock_set(fd, F_UNLCK);//解锁getchar();close(fd);return 0; 
}

为了更好演示,将写访问改成读访问,读访问可以多进程同时进行:

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/file.h> int lock_set(int fd, int type){struct flock old_lock, lock;lock.l_whence = SEEK_SET; //加锁区域为文件开始处 lock.l_start = 0;//加锁区域在文件位置的相对偏移量 lock.l_len = 0;//加锁区域长度 lock.l_type = type;//锁的类型 lock.l_pid = -1;fcntl(fd, F_GETLK, &lock);//写入if(lock.l_type != F_UNLCK){//若未解锁 if(lock.l_type == F_RDLCK){//读取锁 printf("Read lock already set by %d\n", lock.l_pid);}else if(lock.l_type == F_WRLCK){printf("Write lock already set by %d\n", lock.l_pid);} } /*上述可能由于不是解锁状态l_type被设置成了相应的锁值下方进行上锁操作时要再次调用type*/ lock.l_type = type;if((fcntl(fd, F_SETLKW, &lock)) < 0){//上锁失败 printf("Lock failed:type  = %d\n", lock.l_type);return -1;}switch(lock.l_type){case F_RELCK:printf("Read lock set by %d\n", getpid());//获取当前进程的IDbreak;case F_WRLCK:printf("Write lock set by %d\n", getpid());break;case F_UNLCK:printf("Release lock by %d\n", getpid());//解锁返回1 return 1;break; }return 0;//上锁返回0 
}int main(int argc, const char * argv[]){int fd;if((fd = open("test.txt", O_RDWR)) < 0){printf("open error\n");return -1;}lock_set(fd, F_WRLCK);//设置写入锁getchar();//等待响应 lock_set(fd, F_RDLCK);//解锁getchar();close(fd);return 0; 
}

效果:两进程一起访问
在这里插入图片描述

c语言strlen与sizeof函数的区别:

char a[32]
a[32] = "abcd";
strlen(a) = 4;
sizeof(a) = 32;
http://www.mmbaike.com/news/109653.html

相关文章:

  • 自己给别人做网站挣钱吗seo网站内部优化方案
  • 自己做网站 如何推广企业邮箱怎么注册
  • 什么叫响应式网站简述搜索引擎优化的方法
  • 门户网站开发简历怎么自己搭建网站
  • 行业网站建设价格站长工具seo客户端
  • 自己怎么做点击量好的网站搜索大全搜索引擎
  • 企业网站建设哪里做网站好优化百度seo
  • 去掉wordpress副标题立即优化在哪里
  • 网站建设零基础教学广告公司注册
  • 建设旅游网站缺点网页版百度
  • wordpress网站第一次打开慢免费推广链接
  • 凡科网站手机投票怎么做湖南网站排名
  • 支付宝 收费 网站开发最能打动顾客的十句话
  • 互联网门户网站建设管理 总结下载爱城市网app官方网站
  • 网络规划设计师5天修炼电子版盐城seo排名
  • web是网站还是网页今日国际新闻最新消息十条
  • 烟台主流网站百度网站入口链接
  • 2014年百度seo网站排名的详细优化因素统计长春seo网站管理
  • 建筑设计图用什么软件安卓优化大师官方下载
  • 网站突然不收录2017项目推广渠道有哪些
  • 网页制作公司的渠道通路seo推广优化
  • 建网站怎么起名字临沂森工木业有限公司
  • 戈韦思苏州网站建设郑州seo技术博客
  • 网站开发进度管理表bt磁力搜索引擎在线
  • 做网站什么费用宁波靠谱营销型网站建设
  • 网站进度条特效google search
  • 有哪些网站是做网批女装网络优化工具
  • 茶叶网络营销网站建设论文站长统计app软件下载
  • 常熟做网站的百度sem竞价托管
  • 男女做暧网站网页制作的软件