zoukankan      html  css  js  c++  java
  • 磁盘剩余容量监控程序

    同学们在读完一本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

  • 相关阅读:
    使用lambda的精简写法
    lambda实现集合遍历 排序
    stream流 list转map
    stream.min
    lambda实现线程调用
    stream.allMatch
    stream.reduce
    stream流 of
    Stream流 list转set
    SQL Server 游标的简单介绍 转载
  • 原文地址:https://www.cnblogs.com/kingshow123/p/diskcapacity1.html
Copyright © 2011-2022 走看看