How get uuid of a device/partition in linux progra

2020-07-11 07:47发布

问题:

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).



标签: c++ c linux uuid