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

嘉峪关市网站建设_网站建设公司_Linux_seo优化

做一个手机购物网站多少钱,企业网站cms 系统,高端网约车有哪些平台,wordpress 文件夹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.ihoyoo.com/news/2904.html

相关文章:

  • 免费高清图片素材网站有哪些做企业网站电话销售话术
  • 劳务网站怎样做广州网页推广公司
  • 根据描述生成图片的网站韩国优秀平面设计网站
  • 广东品牌网站建设多少钱百度收录批量查询工具
  • 流媒体网站开发pdf电子宣传册如何制作
  • 企业网站 flashwordpress怎么切换中文字体
  • 莆田网站建站建设校园二手市场网站开发的意义
  • 常州辉煌网络网站制作大连网站设计团队
  • 大朗镇网站建设十大免费ae模板网站
  • 网站开发学什么 2018网站的线下推广怎么做
  • 金融网站制作做视频网站要什么软件下载
  • 莱芜泉网站建设站酷海洛
  • 大连网站建设动态部署wordpress
  • 学院网站建设目标网站流量超
  • 网页设计网站链接怎么做重庆帝一网络网站建设专家
  • app网站开发招聘手机网站怎么提高关键词
  • wordpress建立论坛网站网站一般如何做搜索功能
  • 什么网站有做qq群排名的郑州一网网站建设
  • 简易网站开发佛山的网站建设公司
  • 网站设计开发是啥做外贸女装有哪些网站有哪些
  • 广州制作网站公司哪家好html5代码模板
  • 搭建 网站 实例网站开发好学不
  • 网站维护与推广wordpress进不了后台
  • ip查询网站备案查询查询网站建设
  • 湖南云网站建设设计师接单的十个网站
  • 网站的费用可以做无形资产口腔网站设计图
  • 淮安市网站建设杭州企业自助建站
  • 营销型网站建设网站建设营销seo是什么品牌
  • 重庆工业建设网站深圳品牌网站制作公司
  • 万由nas做网站wordpress的栏目页关键词怎么设置