2011-09-15 287 views
3

我正在着手開發一個編程項目,它需要確認可移動媒體(例如usb拇指驅動器)的設備標識,然後再繼續執行其他一些很酷的東西。libudev建議需要

我的一些朋友指出我使用序列號,並且使用udevadm命令進行初步測試表明這應該起作用。我做了一些額外的檢查,看來如果我可以使用libudev來運行該軟件,那麼它應該(最低限度)在Ubuntu,Slackware和Gentoo上進行編譯,這將是一個很好的好處。

所以我用bing找到一個教程,並得到了Signal 11站點(http://www.signal11.us/oss/udev/),這是一本寫得很好的教程。它實際上似乎有我需要的一切。我下載了代碼。修復幾個特定於平臺的錯誤,然後編譯。繁榮!海灣合作委員會編譯沒有錯誤。到現在爲止還挺好。

但是,當我嘗試運行它時,它啓動了一些錯誤,並且我意識到我需要閱讀更多的教程,以便我能夠很好地理解libudev以修復錯誤並生成有效的工作軟件。問題是,真的沒有任何其他教程(我可以找到),並且在最近的服務器損害後,庫文檔的(僅知道?)網站的kernel.org網站停機。

我認爲只是向system()發出udevadm指令,然後解析結果,但這是一種將軟件放在一起的非常糟糕的方式,並且我計劃在完成寫作時將其發佈給社區。

那麼如何最好的讓我學習libudev?

回答

1

libudev是相當簡單的庫。讀過你提到的庫並使用API​​文檔(網站應該很快就會上線)之後,我能夠得到我想要的。 udevadm很有幫助,在發佈# udevadm info --query=all --name=/path/to/dev後,您將獲得udev關於此設備的所有信息,更重要的是,這些屬性函數中使用的參數(例如udev_device_get_property_value(device, "ID_VENDOR"))。所以學習libudev的最好方法是在signal11教程,API文檔和udevadm信息的幫助下開始使用它。

編輯:libudev目前systemd的一部分 - 文檔可作爲手冊頁 - https://www.freedesktop.org/software/systemd/man/libudev.html#

+0

這將是真棒看到這個答案提供一些參考。 – karlphillip

+2

@karlphillip教程:http://www.signal11.us/oss/udev/ API:http://kernel.org/pub/linux/utils/kernel/hotplug/libudev/ – Maciej

+0

不幸的是,鏈接到API參考被打破。 :-( –