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

关于用文件实现进程互斥的问题

    来源: 互联网  发布时间:2016-06-26

    本文导语:  两个进程访问一个互斥文件,我知道可以用文件锁。但是在书上看到一种做法是,创建一个临时文件,这个临时文件只是做为有没有进程在访问互斥文件的标记。每个进程在访问互斥文件之前就不停的用creat去判断临...

两个进程访问一个互斥文件,我知道可以用文件锁。但是在书上看到一种做法是,创建一个临时文件,这个临时文件只是做为有没有进程在访问互斥文件的标记。每个进程在访问互斥文件之前就不停的用creat去判断临时文件是否存在,存在就表示已经有进程在访问互斥文件,直到临时文件不在了,再自己创建一个临时文件,获得互斥文件的访问权。我觉得这种方法是不是有问题,可以保证creat是原子操作吗?不会产生竞争吗?高人给解释一下~~

|

create是原子操作,这一点没有问题;
只是这种方法是在是比较低效率。
其实现在的操作系统都有更高效的方法啊。
比如信号量,文件锁,或者windows下MUTEX。

|
应该是没有问题的,create本身应该不是一个原子操作, 但是两个进程同时调用了creat我想必然其中的一个会返回错误. 要不然OS上面跑了那么多的应用程序,只不定就会有两个进程去创建同一个文件,如果两个都成功的话,那么这两个程序都对这个文件操作不是乱套了.

|
创建一个临时文件,这个临时文件只是做为有没有进程在访问互斥文件的标记。每个进程在访问互斥文件之前就不停的用creat去判断临时文件是否存在,存在就表示已经有进程在访问互斥文件,直到临时文件不在了,

这个是apue上面说的经典办法吧。至于你说是不是原子操作,安全不安全,你只要想想,你又机会在系统下创建2个同名文件吗?只要不可能,那这种锁就是有效的。

    
 
 

您可能感兴趣的文章:

  • 问个多线程网络服务程序的文件操作符的互斥问题
  • 关于文件读些互斥的问题
  • Linux下使用C++互斥访问文件+消息队列
  • 请教如何在qt-linux环境下两个cpp文件中对同一个数组作读写互斥操作?
  • 进程的类型互斥量属性头文件问题
  • 有了信号量以后,还要线程间的互斥锁,进程间的文件锁何用?
  • 子进程关闭父进程打开的文件,父进程可以访问该文件吗
  • 我要实现当进程打开文件时,根据文件名判断是否符合要求,符合后处理文件,再把文件返回给进程,怎么实现啊
  • fork一个子进程后在打开一个文件,如何在子进程中使用这个打开的文件描述符号
  • 一进程源源不断地创建文件,另一进程把这些创建的文件抓取并挪走
  • UNIX系统下,进程写文件,写了很大量的文件,但是进程被KILL -9杀掉,系统可以保证写缓冲上的文件写到系统吗?
  • 在shell命令行中敲一个可执行文件,起一个进程pc,这个进程属于shell进程
  • 用kill/killall强杀进程时,如何能让该进程生成core文件?
  • 多进程mmap同一个文件,当一个进程退出时,是否需要unmap
  • 用多进程读写文件的效率为什么会远远不如一个进程直接IO的效率
  • 请教怎么根据进程输出的日记文件内容判断来重起进程?
  • 有没有办法在打开一个文件之前判断当前是否有进程在使用(读或写)该文件
  • 父子进程读写文件问题
  • 文件操作 多个进程打开文件 不加锁 情况如何
  • 问一个关于多进程同时写文件的问题?
  • 两个进程写同一个文件
  • 父子进程共享文件描述符问题
  • 多进程写文件速度问题
  • 写一个主目录下修改文件内容,用守护进程把这个动作写在日志上
  • 给一个文件加了写锁,为什么子进程仍然可以read?
  • ***如果有两个进程同时写数据到文件,系统是怎样决定写入顺序的?***
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • socket实现多文件并发传输,求助多线程实现问题?
  • Linux下c函数dlopen实现加载动态库so文件代码举例
  • 我想用APPLET实现读取客户端的图片文件,该如何实现?
  • linux内存文件系统ramfs实现原理
  • linux下如实现与window下的驱动器实现文件共享??
  • Linux内存文件系统(ramdisk)的三种实现方式
  • 如何在其他盘中实现对这个盘中所有文件和文件的8映射
  • php实现文件下载简单示例(代码实现文件下载)
  • 如何用Java实现二进制文件到文本文件的相互转化?
  • 不让用户选择文件,程序指定本地文件,Java可以实现上传到服务器吗?
  • 急!如何编程实现pdf文件转html文件?
  • 问一个问题。请问如何在文件系统管理并使用设备,也就是当一个设备装载,下载时。文件系统是如何实现的
  • 请问如何实现将一个文件中的某一行拷贝到另一个文件中?答对定给分!
  • 请问在jsp中如何实现相对路径?我在jsp文件中指定相对路径的文件,可是程序找不到!
  • 实现core文件自动生成配置文件的方法
  • 用户通过mozilla访问页面文件,提交的参数要记录到系统的配置文件中去,如何来实现这个接口?
  • 如新建一个文件夹里面有a.txt b.txt 然后将这个文件夹删除。用一句来实现怎么写啊?
  • 求助 shell中split命令如何实现文件分割 并统计分割文件个数。分割完之后,命名方式从 文件名.001 开始
  • sftp实现两台主机之间传输文件(把一个主机中的文件拷贝到另一个)
  • 急问:怎么将一个文本文件平均拆分成10个文本文件?在shell里面怎么实现?谢谢
  • C++ I/O 成员 eof():如果处于文件结尾处则返回true
  • Shell脚本如何递归现实一个文件夹中的文件(文件夹中含有文件夹)
  • WinDows8最新版文件夹加密
  • 求命令:什么命令可以把文件夹下所有的文件按修改时间先后排出来,包括子文件夹里的文件。
  • python异常信息堆栈输出到日志文件
  • 操作系统 iis7站长之家
  • Centos6下安装Shell下文件上传下载rz,sz命令
  • 请问:proc中的头文件中能包含头文件吗?(感觉如果头文件中包含头文件的话,在链接时就会有错误啊)
  • 在MyEclipse中设开启xml文件自动提示和自动完成功能
  • vi 中编辑两个文件,怎样从其中一个文件拷一段内容到另一个文件中。(同时打开两个文件)


  • 站内导航:


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

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

    浙ICP备11055608号-3