当前位置:  首页  >  服务器技术  >  Linux/unix  >  Linux教程

Linux下如何获取磁盘信息

文章标题:Linux下如何获取磁盘信息。Linux是中国IT实验室的一个技术频道。包含桌面应用,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[100], ptname[100], devname[120], *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] <= '9')
    continue;
    nDiskCount++;
    }
    fclose(f);
    return nDiskCount;
    }
    int main(int argc, char * argv[])
    {
    printf("DiskCount: %d\n", GetDiskCount());
    return 0;
    }
    其实,原理很简单。就是通过proc文件系统获得。在proc文件系统中有一个名为partitions的文件。这个文件中包含本地磁盘的硬盘及分区信息。根据Linux下设备命名规则,如果设备名的最后一个字符是数字就应该是分区,否则就是硬盘。于是,我们就可以轻而易举的知道电脑中有几个硬盘。
    当然,根据这个文件,还可以知道硬盘设备名称以及每个硬盘中分区的数量和每个分区的设备名称。至于如何获取,大家应该都会的。[1] [2] 下一页

吐了个 "CAO" !
扫码关注 PHP1 官方微信号
PHP1.CN | 中国最专业的PHP中文社区 | 凯发国际娱乐 | 凯发国际娱乐下载 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | PHP问答
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有