fcntl文件加锁
int main()
{
	struct flock lock;
	lock.l_type = F_WRLCK;
	lock.l_whence = SEEK_SET;
	lock.l_start = 0;//注意这里加锁的位置如果没有重合,那么两个进程或线程可以对同一个文件的不同位置进行加锁
	lock.l_len = 8;
	int fd = open("1.txt", O_WRONLY | O_CREAT | O_TRUNC);
	if (fd == -1) {
		perror("open");
		return -1;
	}
	if (fcntl(fd, F_SETLKW, &lock) == -1) { //F_SETLKW   lock_wait 阻塞等待别的进程释放锁   /F_SETLKW 不等待直接返回
		close(fd);
		perror("fcntl");
		return -1;	
	}
	sleep(50);
	close(fd);
	return 0;
}
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号