2014-06-12 2 views
0

Simple 인 경우 파일이 포함 된 장치의 장치 노드를 가져옵니다. 나는 열린 파일의 파일 기술자를 가지고 있으며 그것을 포함하고있는 장치의 노드 이름을 알고 싶다.방법 : 파일 설명자가

답변

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; 
} 
+0

함수 호출의 * any *에 대한 오류는 확인하지 않습니다. 이것은 좋은 예제 코드가 아닙니다. –

+1

예제를 더 짧게 만들기 위해 오류를 확인하지 않습니다. 디바이스 노드를 얻는 목적을 달성하기 위해 따라야 할 경로를 보여주기 때문에 좋은 예제 코드가 아니라는 점에 대해 저는 매우 좋아합니다. 훌륭한 제작 코드는 아니지만 확실히 좋은 예입니다. –

관련 문제