当前位置:  技术问答>linux和unix

***如果有两个进程同时写数据到文件,系统是怎样决定写入顺序的?***

    来源: 互联网  发布时间:2015-03-15

    本文导语:  假如有两个进程同时打开一个文件,并写入一段数据,那么此时系统是先完成一个进程的请求,然后再写入下一个进程的数据。还是交替的将两个进程的数据写入文件里?! | 这个取决你打开...

假如有两个进程同时打开一个文件,并写入一段数据,那么此时系统是先完成一个进程的请求,然后再写入下一个进程的数据。还是交替的将两个进程的数据写入文件里?!

|
这个取决你打开文件,写入,关闭文件的顺序和打开方式:可能交替,可能不交替,可能相互覆盖.
一般做这样的操作时都要用P/V操作来进行同步/互斥操作.

|
我们不能预料哪个进程先运行, 即使知道那个进程先运行,那么在这个进程开始运行之后,
所发生的事情也依赖于系统负载和内核的调度算法。通常使用TELL 和WAIT 函数, 使两个进程的输出不再交叉混合。

|
这就是一个竟态条件的例子,比如你往标准输出输出字符的时候,如果不用缓存而是一个字符一个字符的输出的时候,那么有可能不交替,也可能交替,和系统是相关的,这样的情况最好的方法是
进行进程间的"沟通",楼上的说的TELL WAIT就是不错的方法

|
是通过锁机制来解决这个问题的,
如果一个进程要对一个文件进行写操作,
他首先应对该文件加写锁,别的进行如果欲对同一文件进行写操作,就必须等
待了

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 主进程有两个线程,fork子进程后复制主进程两个线程的内存么?
  • 请教,进程通讯问题,除了父子进程能进行通讯外,任意两个进程都可以吗?
  • 两个没有亲缘的进程A和B,如何在进程B中得知进程A的PID号呢?
  • 这个socket程序的服务进程开始服务后,为什么总是两个进程?
  • 一个进程创建了两个线程,如何使得当任何一个线程(比如线程a)结束时,同时也结束线程b,也就是使两个线程一起死掉,怎么办呢?
  • 两个进程写同一个文件
  • 两个进程中的select的关系
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • 写了一个守候进程,怎么防止起两个。
  • 在一个socket守护服务进程中,如何实现同时监听两个端口?
  • 一个进程中能够打开两个管道么 一个读 一个写
  • 两个进程间如何传递float型数据
  • 进程同时访问两个大共享内存,会失败?
  • linux下创建两个进程争夺临界资源,要求用C语言边写!麻烦各位帮帮忙
  • 在线的解答openoffice能否开两个进程
  • 求教:两个进程间大量数据传输的解决方法
  • linux两个进程通讯的方法
  • 关于POSIX进程和线程的两个问题
  • Unix下如何在两个进程之间共享一块大内存??????
  • 两个不同的进程对共享内存中的变量读写,一般通过什么方式同步方便?
  • C++ MultiMaps 成员 swap():交换两个multimaps
  • docker中文入门学习手册 iis7站长之家
  • C++ Lists(链表) 成员 merge():合并两个list
  • 一个Statement不能同时打开两个ResultSet?为了同时打开两个,可以考虑建立两个Statement?甚至两个Connection?
  • C++ Lists(链表) 成员 swap():交换两个list
  • Keepalived 能配两个虚拟ip吗,匹配两个数据库实例?
  • C++ Maps 成员 swap():交换两个map
  • 可以有其他两个类的实例同时调用一个java实例的两个方法吗?
  • C++ Vectors 成员 swap():交换两个Vector
  • 两个域名,两个端口,一个服务器……
  • C++ Lists(链表) 成员 splice():合并两个list


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3