How get uuid of a device/partition in linux programatically?

折月煮酒 提交于 2020-02-27 06:56:10

问题


I am very much new to Linux programming.

My questions are:

  • Is there any way to read the UUID of a device or partition in Linux programmatically?
  • Is there any C/C++ API for user-space applications?

I found some commands sudo vol_id --uuid /dev/sda1, sudo blkid and ls -l /dev/disk/by-uuid/. But all of them are commands which need to run in a terminal. But I need to achieve this from a C/C++ program.

Can some one help me with this problem. (FYI: I need to read UUID of the root filesystem ("/") where Linux has been installed.)

Thank you in advance.


回答1:


The general approach would be:

  • find out what device your / is on by parsing /etc/mtab for example
  • go through the /dev/disks/by-uuid directory (using opendir/readdir/closedir) and find which one points to that device.

See the readlink function for getting the target of a symbolic link. You'll find plenty of code examples for parsing text files on this site or with your favorite search engine.




回答2:


Since blkid already does it, you could also just see how it works and pilfer the solution, if you abide by util-linux's license (GPLv2).



来源:https://stackoverflow.com/questions/5288034/how-get-uuid-of-a-device-partition-in-linux-programatically

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!