检测某个文件是否上锁 代码展示 代码展示 /*************************************************************************************************** * auth taoxp * date 20190605 * @func is_file_lock() * @note check file is lock or not * @para none * @retn true:file is lock, false:file is not lock ***************************************************************************************************/ 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; }