当前位置: 技术问答>linux和unix
linux 多进程控制一个文件的问题
来源: 互联网 发布时间:2016-08-20
本文导语: 如果多个进程对一个文件进行读写操作的时候,第三方的进程把这个文件给删掉了,那进行读写的进程如何知道这个文件被删掉了? (1 不能每次读写都判断这个文件是否存在 2 最好不要用另外一个程序监控这个文...
如果多个进程对一个文件进行读写操作的时候,第三方的进程把这个文件给删掉了,那进行读写的进程如何知道这个文件被删掉了?
(1 不能每次读写都判断这个文件是否存在 2 最好不要用另外一个程序监控这个文件,然后发信号给其他进程进行通知,这样效率太低,因为可能有100个进程操作这个文件)
(1 不能每次读写都判断这个文件是否存在 2 最好不要用另外一个程序监控这个文件,然后发信号给其他进程进行通知,这样效率太低,因为可能有100个进程操作这个文件)
|
inotify
|
你使用fopen打开文件时 如果文件不存在打开是失败的
判断 errno值即可
判断 errno值即可
|
如果多个进程对一个文件进行读写操作的时候,第三方的进程把这个文件给删掉了,那进行读写的进程如何知道这个文件被删掉了?
应该不会被杀掉吧。删掉只是把计数器减一而已,除非计数器为0,否则是不会物理删除的。。。
应该不会被杀掉吧。删掉只是把计数器减一而已,除非计数器为0,否则是不会物理删除的。。。
|
同意楼上的,楼主做过这样的试验就可以验证。
1.先用vi打开一个文件;
2.看另外一个窗口删除vi打开的这个文件;
3.用ps获得vi的进程号;
4.到ls -l /proc/进程号/fd可以看到vi进程打开的文件描述符。cat 文件描述符可以看到已经被删除的文件