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.
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.
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).
精彩评论