操作方法:给定文件描述符,获取包含文件的设备的设备节点

时间:2014-06-12 14:46:33

标签: c++ linux file-descriptor udev device-node

这很简单。我有一个打开文件的文件描述符,我想知道包含它的设备的节点名称。

1 个答案:

答案 0 :(得分:0)

可以使用libudevfstat轻松完成此操作。

#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;
}