Как получить исходное устройство точки монтирования в Linux программно? - PullRequest
0 голосов
/ 14 марта 2019

Я хочу знать, какое устройство смонтировано в каком-либо каталоге, например:

auto device = get_device_of_mount_point("/path/to/some/dir");
std::cout << device << std::endl; // /dev/sda1

1 Ответ

1 голос
/ 14 марта 2019

Вот отправная точка, при условии, что доступен C ++ 17:

#include <string_view>
#include <fstream>
#include <optional>

std::optional<std::string> get_device_of_mount_point(std::string_view path)
{
   std::ifstream mounts{"/proc/mounts"};
   std::string mountPoint;
   std::string device;

   while (mounts >> device >> mountPoint)
   {
      if (mountPoint == path)
      {
         return device;
      }
   }

   return std::nullopt;
}

Вы можете использовать эту функцию следующим образом.

if (const auto device = get_device_of_mount_point("/"))
   std::cout << *device << "\n";
else
   std::cout << "Not found\n";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...