开发者

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

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


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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜