问题
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 (usingopendir/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