当前位置: 技术问答>linux和unix
文件加锁问题(新手提问)
来源: 互联网 发布时间:2016-07-20
本文导语: 一个简单的小程序,对加锁后的文件进行读操作,另开一个终端,向文件追加内容:echo hahahahh >> file.txt 为什么追加操作能成功并且追加后的内容能够输出??代码如下:#include #include #include #include #include int...
一个简单的小程序,对加锁后的文件进行读操作,另开一个终端,向文件追加内容:echo hahahahh >> file.txt
为什么追加操作能成功并且追加后的内容能够输出??代码如下:
为什么追加操作能成功并且追加后的内容能够输出??代码如下:
#include
#include
#include
#include
#include
int main()
{
FILE *fp = NULL;
char s[1024]={0};
fp = fopen("file2.c","r");
flock(fp,LOCK_SH);
while(!feof(fp))
{
fgets(s,1024,fp);
printf("%sn",s);
memset(s,0,1024);
sleep(1);
}
flock(fp,LOCK_UN);
return 0;
}
|
如上楼,你加的是建议性锁,所以各方需要协同.
加强制性锁才能不让其它进程写入.
加强制性锁才能不让其它进程写入.
|
因为你的锁在这里只起到一个标志的作用,而你追加内容没有去判断这个标志,所以当然可以写啊。
http://www.chinaeda.cn/show.aspx?id=15295&cid=46
http://www.chinaeda.cn/show.aspx?id=15295&cid=46
|
锁机制主要是为了保护某一临界区,以避免多个应用同时对其进行进行操作。
要保证数据统一的话,两个操作都需要加锁。
并不是加锁之后其他应用就不能对该文件进行读写了。
要保证数据统一的话,两个操作都需要加锁。
并不是加锁之后其他应用就不能对该文件进行读写了。