文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>读取CPU信息

读取CPU信息

时间:2006-09-07  来源:lonelyair

应该比较容易
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
static int flag=0;
struct cpu_info
{
    unsigned long user;
    unsigned long system;
    unsigned long nice;
    unsigned long idle;
    unsigned long iowait;
    unsigned long irq;
    unsigned long softirq;
};
static struct cpu_info cpu_old;
static struct cpu_info cpu_new;
static inline char *skip_token(const char *p)
{
    while (isspace(*p)) p++;
    while (*p && !isspace(*p)) p++;
    return (char *)p;
}

int getCpu(int *rate,int *intrp)
{
        int fd;
        char buffer[4096], *p;
        int len;
         unsigned long eclips=0,used=0;

        chdir("/proc");
        fd = open("stat", O_RDONLY);
        len = read(fd, buffer, sizeof(buffer)-1);
        close(fd);
        buffer[len] = '\0';
        p=buffer;
        if(flag==0)//first init
        {
                 p = skip_token(p);
                 cpu_old.user=strtoul(p, &p, 10);//user
                 cpu_old.system=strtoul(p, &p, 10);//sys
                 cpu_old.nice=strtoul(p, &p, 10);//nice
                 cpu_old.idle=strtoul(p, &p, 10);//idle
                 cpu_old.iowait=strtoul(p, &p, 10);//iowait
                 cpu_old.irq=strtoul(p, &p, 10);//intr
                 cpu_old.softirq=strtoul(p, &p, 10);//softintr
                *rate=0;
                *intrp=0;
                flag=1;
                return 0;
        }
        else
        {
                p = skip_token(p);
                 cpu_new.user=strtoul(p, &p, 10);//user
                 cpu_new.system=strtoul(p, &p, 10);//sys
                 cpu_new.nice=strtoul(p, &p, 10);//nice
                 cpu_new.idle=strtoul(p, &p, 10);//idle
                 cpu_new.iowait=strtoul(p, &p, 10);//iowait
                 cpu_new.irq=strtoul(p, &p, 10);//intr
                 cpu_new.softirq=strtoul(p, &p, 10);//softintr

                 eclips+=cpu_new.user-cpu_old.user;
                 eclips+=cpu_new.system-cpu_old.system;
                 used=eclips;
                 eclips+=cpu_new.idle-cpu_old.idle;
                if(eclips!=0)
                {
                        *rate=used*100/eclips;
                         *intrp=(cpu_new.irq-cpu_old.irq)*100/eclips;
                }
                else
                {
                        *rate=0;
                        *intrp=0;
                }
                 cpu_old.idle=cpu_new.idle;
                 cpu_old.iowait=cpu_new.iowait;
                 cpu_old.irq=cpu_new.irq;
                 cpu_old.nice=cpu_new.nice;
                 cpu_old.softirq=cpu_new.softirq;
                 cpu_old.system=cpu_new.system;
                 cpu_old.user=cpu_new.user;
                 return 0;
        }
}
排行榜 更多 +
战斗机改造机器人

战斗机改造机器人

休闲益智 下载
行李匹配

行李匹配

休闲益智 下载
七巧板拼图

七巧板拼图

休闲益智 下载