两个独立的程序之间互斥访问资源,弄了一下文件加锁问题
我用一个文件作为锁文件,两个程序独占访问该文件,分别锁文件和释放锁,来保护程序里有互斥访问资源的代码:
void lock_file(string file_name,HANDLE &handleFile)
{
// Open the existing file.
HANDLE hFile;
do {
Sleep(100);
hFile = CreateFile(file_name.c_str(), // open ONE.TXT
GENERIC_WRITE, // open for reading
0, // do not share
NULL, // no security
OPEN_ALWAYS, // existing file only
FILE_ATTRIBUTE_NORMAL, // normal file
NULL); // no attr. template
} while(hFile==INVALID_HANDLE_VALUE);
handleFile = hFile;
cout << "我独占了文件.........." << endl;
}
void unlock_file(HANDLE hFile)
{
cout << "我释放了文件.........." << endl;
CloseHandle(hFile);
}
文件操作总结:
独占访问文件可以使用CreateFile,设置里面的文件访问模式为非共享;也可以使用fstream的open(),设置第三个参数为filebuf::sh_none,但是这个好像vc6.0编译不通过,估计是跟编译器有关。
基本文件操作API:
CreateFile(),WriteFile(),ReadFile(),SetFilePointer(),LockFile(),UnlockFile();
具体使用参考MSDN吧︿_︿