文件的安全访问,该怎么处理
文件的安全访问
假如A进程中有以下代码
加入A进程执行完access函数之后,跳到了一个程序B,而B程序中恰好创建了test.log这个文件,写入了一些数据,并关闭了文件句柄。
此时,跳回A程序,A程序再执行 fp = fopen(FILENAME, "w+"); 那么此时就把B程序写入的内容全部清空了。
现在的问题是,如何保证A程序的_access和fopen 连续执行,或者当A程序执行完_access之后,其他程序不能创建、操作该文件(类似信号量的东西)?
------解决方案--------------------
文件锁
flock
------解决方案--------------------
_fsopen
假如A进程中有以下代码
- C/C++ code
#define FILENAME "D:\\test.log" if(_access(FILENAME, F_OK) == -1) { fp = fopen(FILENAME, "w+"); //do something... }
加入A进程执行完access函数之后,跳到了一个程序B,而B程序中恰好创建了test.log这个文件,写入了一些数据,并关闭了文件句柄。
此时,跳回A程序,A程序再执行 fp = fopen(FILENAME, "w+"); 那么此时就把B程序写入的内容全部清空了。
现在的问题是,如何保证A程序的_access和fopen 连续执行,或者当A程序执行完_access之后,其他程序不能创建、操作该文件(类似信号量的东西)?
------解决方案--------------------
文件锁
flock
------解决方案--------------------
_fsopen