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

建设商城网站的难点网站经营性质

建设商城网站的难点,网站经营性质,响水专业做网站的公司,抚州企业网站做优化linux命令是对Linux系统进行管理的命令。本文介绍的关于linux命令中write调用的原子性的详细描述#xff0c;具体内容如下所述。UNIX环境高级编程中关于原子操作的介绍#xff0c;其中有一种情形是在文件尾端添加数据。文中说#xff0c;如果多个进程都需要将数据添加到某一…linux命令是对Linux系统进行管理的命令。本文介绍的关于linux命令中write调用的原子性的详细描述具体内容如下所述。UNIX环境高级编程中关于原子操作的介绍其中有一种情形是在文件尾端添加数据。文中说如果多个进程都需要将数据添加到某一文件那么为了保证定位和写数据这两步是一个原子操作需要在打开文件时设置O_APPEND标志看到这里我们就会想虽然保证了定位和写数据是一个原子操作但是是否能够保证多个进程或线程写入的数据不会交错呢比如A进程调用write(filedes1,AAA,3)B进程调用write(filedes2,BBBB,4)(其中filedes1和filedes2指向同一个文件)但是***文件中的数据是否有可能是AABBBAB如果这个文件是一个管道或socket呢。linuxman手册页中关于write调用的说明很不详细并未说明写操作是否是原子的所以我们有必要查找SingleUNIXSpecification(SUS)对write调用的说明在SUS中对此调用的说明还是比较详细的。在继续讨论之前我们需要清楚内核在写文件之前会对该文件加锁不管是否成功完成写操作在返回之前都会解锁。下面我们就以三种常见的文件根据SUS标准来讨论上面提出的这个问题1.普通文件SUS中也没有说明在写普通文件时是否会保证是原子操作但是它说明了write调用可能并不能完全把我们需要写入的数据写到文件中去那么什么情况下可能少写数据呢SUS说明了两种情况磁盘已满或则要写入的文件的大小超过了当前进程的文件大小限制。其实至少还有一种情况那就是内核中的高速缓存不够用的时候比如linux内核在发现高速缓存不够用的时候就只写入实际能够容下的数据然后返回。正是由于存在上述***一种情况所以说按照APUE那种方法在linux下面写文件并不能保证我们的数据不会交错(不过我们可以根据write的返回值得知是否有发生交错的可能)。其它的unix内核可能会在实现上不同于linux内核他们可能在写之前就判断一下缓冲区是否足够容纳所有数据如果是这种情况写操作应该就是原子的也可能写了一部分数据后才发现缓冲区不够用并让当前进程进入睡眠状态此时内核如果解锁那么在当前进程睡眠期间其它进程可能写了数据如果不解锁那么就是原子操作其他进程不可能在这个时候写入数据。由上面的分析可知正是由于SUS标准不太完整的标准我们不能确定一定可以按APUE的方法来同时向同一个普通文件写数据。如果我们非要在同一个文件中记录多个进程产生的数据我们***采用unix日志系统采用的方法用一个专用进程处理文件IO其它进程把需要写的数据发送给这个专用进程这样应该比多个进程同时写一个文件可靠和高效。2.管道SUS对管道的写操作说得更多也更明确我们只需遵照其标准就可以了。对于write(pipefd,buf,nbyte),其要点如下如果nbytePIPE_BUF不管O_NONBLOCK是否设置其写操作都是原子的就是说多个进程都在此条件下同时写同一个管道不会引起数据交错。如果nbytePIPE_BUF是不能保证写操作是原子的写入的数据可能与其他进程写入的数据交错。3.socketSUS中对于写socket并没有说很多我们无法从标准中得知write是否保证写操作的原子性。我看了一下linux2.6.14内核关于tcp数据的写操作发现它不是原子的也从网上查到了这部分代码的作者(们)对这个问题的看法他(们)认为对一个可能***阻塞的操作保证原子性是错误的。我们也只能姑且这么认为了。补充:对于用UNIX日志系统服务器的方法连接端必须每个线程connect一次logsvr这样才能保证发过来的日志数据不互相错乱保证原子性此时logsvr只要用reactor方法来处理每个线程的连接就好把这些fd放到队列里轮流处理写文件也保证了写文件的原子性。实际上日志服务器一般都是用UDP来完成的。总结希望本文介绍的Linux命令中write调用的原子性的内容能够对读者有所帮助更多有关linux系统的知识还有待于读者去探索和学习。【编辑推荐】【责任编辑韩亚珊 TEL(010)68476606】点赞 0
http://www.huolong8.cn/news/166165/

相关文章:

  • 个人网站开发背景及意义旧安卓手机做网站
  • 漯河网站建设漯河外国做网站的平台
  • 太原企业建站程序做宠物商品的网站
  • 51电子网郑州网站优化服务
  • 上海工业网站建设众创空间网站建设
  • 网页设计师主要是做什么长春seo推广
  • 国内有哪些比较好的做定制旅游网站外贸网站建设工作室
  • c网站开发视频网站建设如何定位
  • 哪里网站备案方便快实惠福步外贸论坛
  • 网站建设需要多少钱小江网页设计网站建设存在的问题
  • 宝安做网站信科北京网站优化企业
  • 公司网站开发多少钱北京比较好的网站建设公司
  • 做企业品牌网站的公司淘客手机网站模板
  • 网站建设的基本技术如何建立企业网站或者官网
  • 我有域名怎么建网站七牛云最新消息
  • 建立网站功能校园网站建设管理及责任表
  • 网站备案期间可以做推广吗加盟装修公司怎么合作
  • 网站开发岗位需求分析网站如何做网站名称
  • 购物网站建设模板建立一个网站需要多少钱
  • 域名有了怎么制作网站网站如何做seo规划
  • 智能网站推广软件网站建设后期维护
  • 静态页面网站怎么做宁波专业做网站
  • 织梦做电子商务网站徐州市铜山新区建设局网站
  • 外贸网站找人建设关于市场营销的100个问题
  • 山东省建设厅执业注册中心网站wordpress 网站登录
  • 58同城企业网站怎么做的百度竞价点击价格
  • 西宁网站建设报价cu君博規范横岗网站设计
  • 网站制作的基本流程企业邮箱 免费
  • 装修平台网站排名前十名wordpress收录提交插件
  • 泰州企业模板建站河北城乡建设学校网站