linux认证辅导:Linux下如何获取磁盘信息
熟悉Linux的都知道,Linux下硬盘的命名规则是had、hdb…sda、sdb之类的。但是,如何才能知道机器上到底有多少块硬盘呢?刚开始,我以为/dev目录下会有所体现结果我发现设备文件存在并不代表这个设备。那么怎么办才好呢。后来我发现fdisk可以得到硬盘的数量。于是就阅读了一下fdisk的源代码。果然找到了Linux获取硬盘数量的方法。实例代码如下:
#include
#include
int GetDiskCount()
{
FILE* f = fopen("/proc/partitions", "r");
if (!f)
{
fprintf(stderr, "fopen /proc/partitions failed!errno=%d\n", errno);
return 0;
}
char line, ptname, devname, *s;
int ma, mi, sz;
int nDiskCount = 0;
while (fgets(line, sizeof(line), f))
{
if (sscanf(line, " %u %u %u %[^\n ]",
&ma, &mi, &sz, ptname) != 4)
continue;
for (s = ptname; *s; s++)
continue;
/* note: excluding '0': e.g. mmcblk0 is not a partition name! */
if (s[-1] >= '1' && s[-1]
linux认证辅导:Linux下如何获取磁盘信息
获取硬盘信息:现在,我们已经可以知道硬盘数量、硬盘的设备名称、分区数及分区的设备名称。那么,怎么才能知道这些设备的信息呢?比如硬盘大小、扇区大小、分区大小、分区已经使用的大小等等。
关于硬盘的信息,在fdisk的源码中也可以找到相关的源码。实例代码如下:
#include
#include
int GetDiskCount()
{
FILE* f = fopen("/proc/partitions", "r");
if (!f)
{
fprintf(stderr, "fopen /proc/partitions failed!errno=%d\n", errno);
return 0;
}
char line, ptname, devname, *s;
int ma, mi, sz;
int nDiskCount = 0;
while (fgets(line, sizeof(line), f))
{
if (sscanf(line, " %u %u %u %[^\n ]",
&ma, &mi, &sz, ptname) != 4)
continue;
for (s = ptname; *s; s++)
continue;
/* note: excluding '0': e.g. mmcblk0 is not a partition name! */
if (s[-1] >= '1' && s[-1]
页:
[1]