进程间使用flock实现
Fd = open("lock.txt", O_WRONLY | O_CREAT, 0666);
if(iFd == -1)
{
printf("Open lock file error!/n");
return -1;
}
加锁:
Ret = flock(Fd, LOCK_EX | LOCK_NB);
if(0!= Ret)
{
close(Fd);
return -1;
}
使用LOCK_EX是对文件描述符fd进行加锁,如果成功,返回0,表示该文件还没有被加锁,可以对其进行写操作。如果失败返回-1,表示该文件已经被加锁,正在被使用,故要等到其解锁后才能使用。
LOCK_NB表示非阻塞。
这是在文件处理完后,对文件进行解锁:
if((flock(fd, LOCK_UN ))<0)
{
return -1;
}
多线程时可使用;
pthread_mutex_lock()、pthread_mutex_unlock().