当前位置: 技术问答>linux和unix
关于对文件操作的同步问题
来源: 互联网 发布时间:2016-04-16
本文导语: 多个进程可以同时打开和操作同一个文件,所以同一个文件就可能对应多个文件对象,进程各自操作自己的文件对象,也就是file结构,我想知道这是怎么同步的?如果同时有多个进程对同一个文件进行操作怎么...
多个进程可以同时打开和操作同一个文件,所以同一个文件就可能对应多个文件对象,进程各自操作自己的文件对象,也就是file结构,我想知道这是怎么同步的?如果同时有多个进程对同一个文件进行操作怎么办?还有,file结构有个字段是f_count,这个是干什么用的呢?f_count的值会大于1吗?我觉得既然打开一次文件就对应一个file,那么f_count的值怎么会大于1呢?是不是用fork创建子进程时才会出现f_count大于1?
我是新手,问的问题都很白痴,但我自己又实在挺困惑,请大家帮我。谢谢。
我是新手,问的问题都很白痴,但我自己又实在挺困惑,请大家帮我。谢谢。
|
关于f_count的值的变化,请在源码中搜索一下就有了
关于同步问题,往往与具体的文件系统相关。例如在ext2文件系统中,多次用到了semaphore,例如在inode结构中
...
struct semaphore i_sem;
...
等等
一般情况下,读-读不必同步,读写或者写写需要同步,建议看一下exe2中的generic_file_write()函数
关于同步问题,往往与具体的文件系统相关。例如在ext2文件系统中,多次用到了semaphore,例如在inode结构中
...
struct semaphore i_sem;
...
等等
一般情况下,读-读不必同步,读写或者写写需要同步,建议看一下exe2中的generic_file_write()函数
|
多个进程打开同一个文件并操作,想不出错就必需使用互斥手段,简单点就用文件锁就可以了
|
读写或者写写肯定要保证原子操作吧~~
信号量 文件锁 都是做这个用的吧
信号量 文件锁 都是做这个用的吧