這個需要對檔案加鎖才能實現,可以用fcntl函式實現
int lock(const char * filepath )
{
int fd = 0;
struct flock flock;
memset( &flock, 0, sizeof(flock) );
fd = open( filepath, O_RDWR,S_IRUSR|S_IWUSR );
if ( fd < 0 )
printf("open error!\n");
return ( -1 );
}
flock.l_type = F_WRLCK;
flock.l_whence = SEEK_SET;
flock.l_start = 100000;
flock.l_len = 0;
if ( fcntl( fd, F_SETLK, &flock ) ) //加鎖,如果失敗則等待10秒
printf("cannot set lock\n");
printf("the process will retry after 10 seconds\n");
sleep(10); //不同版本的sleep單位可能不一樣,有的是秒有的是毫秒,你自己看著改
if ( fcntl( fd, F_SETLK, &flock ) ) //加鎖,如果失敗則退出
return( -1 );
return( 0 );
這個需要對檔案加鎖才能實現,可以用fcntl函式實現
int lock(const char * filepath )
{
int fd = 0;
struct flock flock;
memset( &flock, 0, sizeof(flock) );
fd = open( filepath, O_RDWR,S_IRUSR|S_IWUSR );
if ( fd < 0 )
{
printf("open error!\n");
return ( -1 );
}
flock.l_type = F_WRLCK;
flock.l_whence = SEEK_SET;
flock.l_start = 100000;
flock.l_len = 0;
if ( fcntl( fd, F_SETLK, &flock ) ) //加鎖,如果失敗則等待10秒
{
printf("cannot set lock\n");
printf("the process will retry after 10 seconds\n");
sleep(10); //不同版本的sleep單位可能不一樣,有的是秒有的是毫秒,你自己看著改
if ( fcntl( fd, F_SETLK, &flock ) ) //加鎖,如果失敗則退出
return( -1 );
}
return( 0 );
}