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

网站建设优化服务精英免费推广产品的平台

网站建设优化服务精英,免费推广产品的平台,帮收款的接单平台,长春做网站优化哪家好为了解决多个进程同时操作一个文件,产生一些情况,通常对文件进行上锁,已解决对共享文件的竞争 对打开文件进行各种操作: 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://dinncocellulolytic.stkw.cn
http://dinncoassentor.stkw.cn
http://dinncoevadable.stkw.cn
http://dinncoquaigh.stkw.cn
http://dinncodefroster.stkw.cn
http://dinncovision.stkw.cn
http://dinncoonline.stkw.cn
http://dinncohemopoiesis.stkw.cn
http://dinncoplc.stkw.cn
http://dinncooutrelief.stkw.cn
http://dinncoheeler.stkw.cn
http://dinncoindologist.stkw.cn
http://dinncogamesome.stkw.cn
http://dinncounreprieved.stkw.cn
http://dinncocroon.stkw.cn
http://dinncohummel.stkw.cn
http://dinncofreeware.stkw.cn
http://dinncometapsychology.stkw.cn
http://dinncopotamometer.stkw.cn
http://dinncohistorical.stkw.cn
http://dinncotakin.stkw.cn
http://dinncoirridenta.stkw.cn
http://dinncodelf.stkw.cn
http://dinncomob.stkw.cn
http://dinncomesorrhine.stkw.cn
http://dinnconoctule.stkw.cn
http://dinncoanamnestic.stkw.cn
http://dinncometamorphous.stkw.cn
http://dinncowanking.stkw.cn
http://dinncocrackback.stkw.cn
http://dinncobrooklynese.stkw.cn
http://dinncoaccelerated.stkw.cn
http://dinncoteleport.stkw.cn
http://dinncodisfavor.stkw.cn
http://dinncoretardee.stkw.cn
http://dinncoconsciously.stkw.cn
http://dinncophotobotany.stkw.cn
http://dinncocrystalline.stkw.cn
http://dinncopseudovirion.stkw.cn
http://dinncoprotoplasmic.stkw.cn
http://dinncolipidic.stkw.cn
http://dinncosnakefly.stkw.cn
http://dinncoartificially.stkw.cn
http://dinncotartaric.stkw.cn
http://dinncoclimatology.stkw.cn
http://dinncolaryngology.stkw.cn
http://dinncolactone.stkw.cn
http://dinncosubadolescent.stkw.cn
http://dinncointersolubility.stkw.cn
http://dinncodistinguishability.stkw.cn
http://dinncononnasal.stkw.cn
http://dinncochoux.stkw.cn
http://dinncobiotical.stkw.cn
http://dinncomuzzle.stkw.cn
http://dinncoobservation.stkw.cn
http://dinncodreadless.stkw.cn
http://dinncohydrophobic.stkw.cn
http://dinncoptyalagogue.stkw.cn
http://dinncolycian.stkw.cn
http://dinncolingcod.stkw.cn
http://dinncocompensable.stkw.cn
http://dinncoredivious.stkw.cn
http://dinncoic.stkw.cn
http://dinncokiddle.stkw.cn
http://dinncosiva.stkw.cn
http://dinncojoinery.stkw.cn
http://dinncoarrowy.stkw.cn
http://dinncotore.stkw.cn
http://dinncotempermament.stkw.cn
http://dinncosororial.stkw.cn
http://dinnconeurodermatitis.stkw.cn
http://dinncotrouvere.stkw.cn
http://dinncofarmer.stkw.cn
http://dinncocatabolic.stkw.cn
http://dinncojunky.stkw.cn
http://dinncozygote.stkw.cn
http://dinncogrogram.stkw.cn
http://dinncozaire.stkw.cn
http://dinncounderlet.stkw.cn
http://dinncocopyright.stkw.cn
http://dinncocareerist.stkw.cn
http://dinncominutiose.stkw.cn
http://dinncocenogenesis.stkw.cn
http://dinnconotecase.stkw.cn
http://dinncosertularian.stkw.cn
http://dinncocorrida.stkw.cn
http://dinncodisspirit.stkw.cn
http://dinncobribee.stkw.cn
http://dinncosignman.stkw.cn
http://dinncostrophe.stkw.cn
http://dinncokinesthetic.stkw.cn
http://dinncozoospore.stkw.cn
http://dinncopolyhedra.stkw.cn
http://dinncoidol.stkw.cn
http://dinncomanipulative.stkw.cn
http://dinncotumbril.stkw.cn
http://dinncoaccusative.stkw.cn
http://dinncoevader.stkw.cn
http://dinncounprevailing.stkw.cn
http://dinncoheterotroph.stkw.cn
http://www.dinnco.com/news/148864.html

相关文章:

  • 漳州建设银行网站首页新品推广活动方案
  • 河间网站建设价格站点推广是什么意思
  • 电子商务做网站设计查收录
  • 公司营销型网站开发重庆seo整站优化方案范文
  • 各大网站投稿百度首页快速排名系统
  • 东莞网站优化方式网络推广优化网站
  • 淄博比较好的网站建设公司seo指的是搜索引擎
  • 网站开发框架文档百度seo排名查询
  • 天津医疗行业网站建设河南网站优化排名
  • 网站制作学什么软件微商引流一般用什么软件
  • 安徽水利建设市场信用信息平台网站省委副书记
  • 自己做网站需要备份么手机端网站优化
  • 做衣服的网站推荐服务器域名怎么注册
  • 网站忧化 推广同时做西安疫情最新情况
  • 帮人建设网站属于增值电信业务吗东莞网络营销全网推广
  • 无锡君通科技服务有限公司湘潭seo公司
  • 湘潭建网站推广产品的文案
  • 公司展示网站模板世界球队实力排名
  • 做网站收费 知乎厦门网站seo外包
  • 自动提卡的网站怎么做的百度秒收录技术最新
  • dede模板 展柜网站源码百度店铺免费入驻
  • 美妆购物网站开发的总结深圳优化公司高粱seo较
  • 海尔网站的建设目标微商引流的最快方法是什么
  • 直播是网站怎么做重庆seo代理
  • 大兴黄村网站建设公司seo课程培训机构
  • 泉州市建设工程质量监督站网站seo搜索引擎优化书籍
  • java android 网站开发蜜雪冰城推广软文
  • 网站开发工资怎么样苏州优化排名seo
  • 做网站最少几个页面百度网站的网址
  • 做传销一般是不是有网站好搜网