其实本质上就是需要对文件加锁,最好是读写锁。读的时候加读锁,写的时候加写锁。

用完了就释放锁,嗯,基本操作了。

 

头文件 + 函数如下:

 

参数说明:

  • LOCK_SH 建立共享锁定。多个进程可同时对同一个文件作共享锁定。
  • LOCK_EX 建立互斥锁定。一个文件同时只有一个互斥锁定。
  • LOCK_UN 解除文件锁定状态。
  • LOCK_NB 无法建立锁定时,此操作可不被阻断,马上返回进程。通常与LOCK_SH或LOCK_EX 做OR(|)组合。

单一文件无法同时建立共享锁定和互斥锁定,而当使用dup()或fork()时文件描述词不会继承此种锁定。

返回值说明:

  • 返回0表示成功
  • 返回-1表示错误
  • 错误代码存于errno.

 

flock()会依参数operation所指定的方式对参数fd所指的文件做各种锁定或解除锁定的动作。此函数只能锁定整个文件,无法锁定文件的某一区域。

 

另外需要注意的是,我们经常会用fopen打开函数,此时获得的是一个File*, 需要用fileno函数转换为fd.

 

这里实现了判断一个路径是文件、读取文件、写入文件方法:

 

C++11代码:

以上是工程中用到的读写文件方法。

【C/C++】多进程同时读写一个文件
Tagged on:         
0 0 vote
Article Rating
订阅
提醒
0 评论
Inline Feedbacks
View all comments