linux中写一个C++函数,返回disk的uuid,多个用都好隔开,提示/dev/disk/by-uuid
时间: 2024-01-21 18:02:51 浏览: 128
根据盘符获取U盘序列号,使用C++按照标准封装的供C#调用的DLL
可以使用以下的C++函数来获取磁盘的UUID,并以逗号分隔的方式返回多个磁盘的UUID:
```c++
#include <iostream>
#include <string>
#include <fstream>
#include <vector>
#include <dirent.h>
std::vector<std::string> getDiskUUIDs() {
std::vector<std::string> uuids;
DIR* dir = opendir("/dev/disk/by-uuid");
if (!dir) {
std::cerr << "Failed to open /dev/disk/by-uuid" << std::endl;
return uuids;
}
struct dirent* entry;
while ((entry = readdir(dir)) != nullptr) {
if (entry->d_type == DT_LNK) {
std::string uuid_file = "/dev/disk/by-uuid/" + std::string(entry->d_name);
std::ifstream uuid_ifs(uuid_file);
if (uuid_ifs) {
std::string uuid;
std::getline(uuid_ifs, uuid);
uuids.push_back(uuid);
}
}
}
closedir(dir);
return uuids;
}
int main() {
std::vector<std::string> uuids = getDiskUUIDs();
for (const auto& uuid : uuids) {
std::cout << uuid << ",";
}
return 0;
}
```
这个函数会读取 `/dev/disk/by-uuid` 目录下的所有链接文件,获取其对应的 UUID。UUID 文件的路径为 `/dev/disk/by-uuid/UUID`,其中 UUID 为磁盘的 UUID。最后,函数会将获取到的多个磁盘的 UUID 以逗号分隔的方式返回。
阅读全文