场景:
我使用Linux操作系统的时候,自己的虚拟机能够正常判断文件类型,而且同一台电脑之前几次都能正确识别文件类型,但这一次识别文件类型错误。单步调试,文件名能够正常被读取。下面的函数中除了"."和".."的目录能够正常识别以外,其余目录文件全被识别为普通文件(ptr->d_type为0)。
代码如下:
std::vector<std::string> folderList; DIR *dir; struct dirent *ptr; std::string allPath = path; //文件或文件的完整路径 if ((dir=opendir(allPath.c_str())) == NULL){ zout<<"open dir error:"<<allPath << endl; std::perror("error info:"); return folderList; } while ((ptr=readdir(dir)) != NULL){ if(strcmp(ptr->d_name,".")==0 || strcmp(ptr->d_name,"..")==0) ///current dir OR parrent dir continue; else if(ptr->d_type == 4){ //若为目录文件则返值为,普通文件则为0 folderList.push_back(ptr->d_name); } } std::sort(folderList.begin(), folderList.end()); closedir(dir); return folderList;
产生原因:
硬盘所在的目录未被挂载成功。
查看磁盘情况:
查看磁盘情况:df -h(发现无对应磁盘)
查看设备情况: ls /dev/md*
解决方法:
命令行输入:mount /dev/md127(设备路径) /mnt/store(文件和目录所在路径),即将"/dev/md127"设备挂载在"/mnt/store"路径下的。 问题得以解决。