代码改变世界

磁盘剩余容量监控程序

2013-10-31 17:05  kingshow  阅读(522)  评论(0编辑  收藏  举报

同学们在读完一本C语言参考书,能够做到C语言简单入门之后,往往有这样一种感觉:我知道用if语句可以表示条件选择,用for语句可以表示循环,我还知道如何写一个函数,也知道如何使用指针访问数据或者函数,可是我就是不知道如何用C语言解决现实生活中的实际问题:如何为寝室的下载狂人写一个磁盘剩余容量监视程序来监视磁盘,防止剩余容量不足?如何为他写一个个性化的下载程序,使之可以用命令行的方式灵活地下载文件?如何。。。 当我们掌握了C语言的基础知识后,但是却不知道如何运用,在遇到一些实际问题时,却感觉无从下手。这就是我们在C语言学习上的短板。

《C程序设计伴侣》将通过一系列生动有趣的,来自实际的例子,为大家补上这一课。让大家通过《C程序设计伴侣》的学习,不仅对C语言的语法知识有更加深入的理解,同时更知道如何运用这些知识,来解决实际生活中遇到的问题。

好了,现在就动手吧!

要解决这个问题,根据我们已经学过的知识,其实有这样一个简单的思路:这是一个监控程序,需要不断地检查磁盘剩余容量,所以主体上这是一个while(true)的无限循环:因为需要检查磁盘剩余容量,所以我们需要调用系统API得到系统的磁盘剩余容量,稍微google,就可以得到GetDiskFreeSpace()函数就是来做这件事的。最后,既然是检测,那就是当得到的剩余容量小于某个阀值时,提出警告,于是,这里需要用到条件语句对剩余容量进行判断,并采取不同的措施,如果满足剩余容量,这Sleep()一定时间后继续检查,如果不满足,则提出警告并结束整个循环。

按照上面的思路,我们可以将整个监控程序实现如下:

/*
 ============================================================================
 diskCapacity1.c
 Created on  : 2013年10月31日16:28:13
 Author      : Bruce
 Version     : v1.0
 Copyright   : Your copyright notice
 Description : disk capacity in C, Ansi-style
 ============================================================================
 */
#include <windows.h>
#include <stdio.h>
#include <stdbool.h>
int main()
{
    //开始无限循环,不断见识磁盘容量
    while(true)
    {
        ULARGE_INTEGER space;

        //调用Windows API获得C盘的剩余容量
        if(GetDiskFreeSpaceEx("C:",0,0,&space))
        {
            //将剩余字节数转换为G(千兆字节)为单位
            int free = space.QuadPart/(1024*1024*1024);
            //如果剩余字节数小于10千兆字节,则向用户报警,并用break关键字结束循环
            if(free <10)
            {
                puts("WARNNING! The free space is less than 10G.");
                break;
            }
            //休眠10分钟(60*1000),开始下一次循环
            Sleep(10*60*1000);
        }
    }
    return 0;
}

 

转自:http://www.howzhi.com/course/3387/lesson/42898