【问题标题】:Getting disk label in Linux in C/C++ [duplicate]使用 C/C++ 在 Linux 中获取磁盘标签 [重复]
【发布时间】:2012-02-07 14:51:28
【问题描述】:

可能重复:
How to get drive label in Linux using C from userspace

如何在 C/C++ 编写的程序中通过文件名(例如 /dev/sda1)获取磁盘的标签?

【问题讨论】:

  • 查看给出该标签的实用程序的源代码。
  • @PlasmaHH 接受的答案 404 的
  • @Joe:在谷歌上搜索答案中的链接名称会导致新的 uri(kernel.org 已被广泛重组)。不应该太难做到这一点。您也可以很好地编辑答案以指向新的网址。或发表评论。

标签: c++ c linux


【解决方案1】:

您可以编写与此命令等效的 C 或 C++ 代码:

find -L /dev/disk/by-label -inum $(stat -c %i /dev/sda1) -print

stat()你关心的设备文件,记住它的inode号。遍历 /dev/disk/by-label 中的所有文件,以及 stat() 每个文件。当 inode 编号匹配时,匹配文件的名称就是该磁盘的标签。

如果是我,我会用 C++ 编写上述算法,使用 Boost.Filesystem

【讨论】:

  • 谢谢。我知道这种方式 - 使用 /dev/disk/by-label。但是应用 inode 的想法很有趣。唯一的注意事项: lstat() 提供有关链接本身的信息,而不是有关它指向的文件的信息。所以对于这两种情况都必须使用 stat()。
  • 回复:lstat。你是对的,当然。我修正了我的答案。
  • 命令的开头应该是 find -L /dev/disk/by-path。
  • 不,我的意思是/dev/disk/by-label。搜索 /dev/disk/by-path 不会给我 OP 要求的东西——标签。
猜你喜欢
  • 2017-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-18
  • 2013-04-20
  • 2012-08-27
  • 2020-07-08
  • 1970-01-01
相关资源
最近更新 更多