linux中写一个C++函数,返回disk的uuid,多个用都好隔开,使用ls /dev/disk/by-uuid
时间: 2024-01-21 19:02:51 浏览: 165
可以使用以下的C++函数来获取磁盘的UUID,并以逗号分隔的方式返回多个磁盘的UUID:
```c++
#include <iostream>
#include <string>
#include <sstream>
#include <fstream>
#include <vector>
std::vector<std::string> getDiskUUIDs() {
std::vector<std::string> uuids;
std::ifstream ifs("/proc/mounts");
if (ifs.fail()) {
std::cerr << "Failed to open /proc/mounts" << std::endl;
return uuids;
}
std::string line;
while (std::getline(ifs, line)) {
std::istringstream iss(line);
std::string dev, mount_point, fs_type, options, dump, pass;
iss >> dev >> mount_point >> fs_type >> options >> dump >> pass;
if (fs_type == "ext4") { // 这里可以根据需要修改文件系统类型
std::string uuid_file = "/dev/disk/by-uuid/" + dev.substr(dev.find_last_of('/') + 1);
std::ifstream uuid_ifs(uuid_file);
if (uuid_ifs) {
std::string uuid;
std::getline(uuid_ifs, uuid);
uuids.push_back(uuid);
}
}
}
return uuids;
}
int main() {
std::vector<std::string> uuids = getDiskUUIDs();
for (const auto& uuid : uuids) {
std::cout << uuid << ",";
}
return 0;
}
```
这个函数会读取 `/proc/mounts` 文件,获取当前挂载的文件系统信息,然后针对每个 ext4 文件系统,获取其对应的 UUID。UUID 文件的路径为 `/dev/disk/by-uuid/UUID`,其中 UUID 为磁盘的 UUID。最后,函数会将获取到的多个磁盘的 UUID 以逗号分隔的方式返回。
阅读全文