UNIX下fstream如何实现文件锁
一个多进程后台程序,同时对一个文本文件进行操作,为了防止出现相互覆盖的情况,需要用到文件锁,C下的FOPEN和FLOCK应该是可以的,但是我想用FSTREAM实现.
CSDN中FSTREAM的open函数的第三个参数设置为filebuf::sh_none可以进行文件锁定,但是我是在UNIX下编程,我查看了一下fstream这个文件,fstream里的open函数没有第三个参数这样的写法.即便加上第三个参数,那么也自然无法通过编译的.
请教诸位高人,100分送上.
[解决办法]
既然你的文件是你的程序内多个线程读写,那你可以自己写个CLock类,然后写个CLockFStream继承于fstream和CLock2个类
伪代码
class CLock
{
public:
void lock();
bool islock();
};
class CLockFStream :public CLock,fstream
{
};
[解决办法]
把文件指针转换成文件描述符:int fileno(FILE *stream);
[解决办法]
unix联机帮助用man....