fcntl的一个疑问
使用fcntl加上F_WRLCK锁,
struct flock lock;
lock.l_type = F_WRLCK;
lock.l_whence = SEEK_SET;
lock.l_start = 0;
lock.l_len = 0;
if(fcntl(fd,F_SETLK,&lock) == -1)
{
perror("fcntl");
return -1;
}
两个进程都写文件,在锁还没释放时,有一个进程会输出fcntl: Resource temporarily unavailable
但是,如果进程里检测到有锁时不停止写入,即继续写入,貌似仍然可以真的写入东西到文件,覆盖掉另外一个进程写入的内容。
这个锁难道只是做做样子?不是内核里面锁住的?不知道我的这个想法有没有错误?