저는 다음을 수행해야 하는 C/C++ 도구를 작성하고 있습니다.
- 새 마운트 지점이 설치되면 감지합니다. ✔
- 이 마운트 지점을 제공하는 (USB) 장치를 찾으십시오. ❓
- 장치의 USB 공급업체 ID와 제품 ID를 가져옵니다. ✔ - libusb
GNU/Linux에서 제공하는 인터페이스를 사용하여 작업 2를 수행하는 방법을 잘 모르겠습니다. 저는 명령줄 도구를 사용하는 데 관심이 없습니다. 애플리케이션을 작성 중이고 운영 체제 인터페이스를 사용해야 합니다.
지금까지 나는 (마운트가 변경되었는지 확인하기 위해 사용하는 것)을 사용해 보았지만 /proc/{pid}/mountinfo
어떤 장치가 이 마운트 지점을 제공하는지 추적할 수 없는 것 같습니다.
어떤 도움이라도 대단히 감사하겠습니다.
답변1
udev를 사용한다고 가정하면,리브데프좋은 선택이 될 수도 있습니다. udev는 새 장치가 시스템에 삽입될 때 장치 노드를 자동으로 생성하는 Linux의 하위 시스템입니다. udev를 사용하면 새 장치가 시스템에 연결될 때 이를 모니터링하고 원하는 모든 정보를 얻을 수도 있습니다. 원하는 속성을 쿼리하고 해당 값을 쉽게 얻을 수 있는 "udev_device_get_sysattr_value"와 같은 멋진 기능을 제공합니다.
udev가 제공하는 속성을 확인하려면 다음과 같이 udevadm 유틸리티를 사용할 수 있습니다.
udevadm 정보 --query=all -n /dev/your_device_node
답변2
/proc/{pid}/mounts
표시 화면. 기본 및 보조 ID를 가져온 다음 /sys/dev/block/{major}:{minor}
USB 장치에 대한 심볼릭 링크를 가져옵니다.