Как: Получить узел устройства, содержащий файл, с учетом дескриптора файла

Просто как тот. У меня есть файловый дескриптор открытого файла, и я хочу знать имя узла устройства, которое его содержит.

0

Решение

Это можно сделать простым способом, используя libudev а также fstat.

#include <libudev.h>   // udev headers.
#include <sys/stat.h>  // for fstat function and stat struct.
#include <iostream>    // for printing ouput.
#include <fcntl>       // for open function.

using namespace std;

int main(int argc, char *argv[])
{
int fd = open(argv[1], O_RDONLY);  // The file can be opened using any other mode, Eg. O_RDWR, O_APPEND, etc...
struct udev *udev = udev_new();
struct stat tb;
fstat(fd, &tb);
struct udev_device* dev = udev_device_new_from_devnum(udev, 'b', tb.st_dev);
cout << "The opened file is located in the device: " << udev_device_get_devnode(dev) << endl;
return 0;
}
0

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector