代码展示
static bool is_file_lock(char *file){
int fd = -1;
bool ret = false;
struct flock fl;
fl.l_whence = SEEK_SET;
fl.l_start = 0;
fl.l_len = 0;
if(0 == access(file, F_OK)){
fd = open(file, O_RDWR, 0666);
if(fd < 0){
DEBUG_PRINTF("open \"%s\" fail.\n", file);
}else{
if(fcntl(fd, F_GETLK, &fl) < 0){
DEBUG_PRINTF("get \"%s\" lock fail.\n", file);
}else{
if(fl.l_type == F_WRLCK){
DEBUG_PRINTF("\"%s\" with write lock.\n", file);
ret = true;
}else{
DEBUG_PRINTF("\"%s\" without write lock.\n", file);
}
}
close(fd);
}
}else{
DEBUG_PRINTF("file \"%s\" not exist.\n", file);
}
return ret;
}