linux 多进程控制一个文件的问题

yueyinggufan 2010-04-13 06:14:04
如果多个进程对一个文件进行读写操作的时候,第三方的进程把这个文件给删掉了,那进行读写的进程如何知道这个文件被删掉了?
(1 不能每次读写都判断这个文件是否存在 2 最好不要用另外一个程序监控这个文件,然后发信号给其他进程进行通知,这样效率太低,因为可能有100个进程操作这个文件)
...全文
337 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiangfeng999 2010-04-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xiaowai0219 的回复:]
如果多个进程对一个文件进行读写操作的时候,第三方的进程把这个文件给删掉了,那进行读写的进程如何知道这个文件被删掉了?
应该不会被杀掉吧。删掉只是把计数器减一而已,除非计数器为0,否则是不会物理删除的。。。
[/Quote]
同意楼上的,楼主做过这样的试验就可以验证。
1.先用vi打开一个文件;
2.看另外一个窗口删除vi打开的这个文件;
3.用ps获得vi的进程号;
4.到ls -l /proc/进程号/fd可以看到vi进程打开的文件描述符。cat 文件描述符可以看到已经被删除的文件
cceczjxy 2010-04-14
  • 打赏
  • 举报
回复
你使用fopen打开文件时 如果文件不存在打开是失败的
判断 errno值即可
hittlle 2010-04-14
  • 打赏
  • 举报
回复
inotify
ecsape 2010-04-14
  • 打赏
  • 举报
回复
每个进程访问文件的时候,在打开前,判断文件/var/file.lock是否存在,不存在创建一个文件/var/file.lock ,读写,完了后,删除/var/file.lock。存在就wait到这个文件不存在。
xiaowai0219 2010-04-14
  • 打赏
  • 举报
回复
如果多个进程对一个文件进行读写操作的时候,第三方的进程把这个文件给删掉了,那进行读写的进程如何知道这个文件被删掉了?
应该不会被杀掉吧。删掉只是把计数器减一而已,除非计数器为0,否则是不会物理删除的。。。

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧