ARM LINUX项目,需要在WEB上显示系统硬盘、内存使用情况。
方法,直接调用 df -h和free命令,然后分析返回的信息提取出数据。
#include <sys/statfs.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char **argv)
{
int cameraCount = 0;
FILE *fstream=NULL;
char buff[1024];
char str[256];
long d_tot, d_used, d_available,d_percent;
long r_tot, r_used, r_available,r_percent;
if(NULL==(fstream=popen("df -k","r")))
{
return -1;
}
while(NULL!=fgets(buff, sizeof(buff), fstream)){
if(sscanf(buff, "/dev/root %ld %ld %ld %ld", &d_tot, &d_used, &d_available,&d_percent) == 4){
break;
}
memset(buff,0,sizeof(buff));
}
pclose(fstream);
if(NULL==(fstream=popen("free","r")))
{
return -1;
}
while(NULL!=fgets(buff, sizeof(buff), fstream)){
if(sscanf(buff, "Mem:%ld %ld %ld", &r_tot, &r_used, &r_available) == 3){
r_percent = r_used*100/r_tot;
break;
}
memset(buff,0,sizeof(buff));
}
pclose(fstream);
printf("Content-Type:text/html\n\n");
printf("<html>\r\n");
printf("<head>");
printf("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />");
printf("<script language=\"javascript\" type=\"text/javascript\" src=\"js.js\"></script>");
printf("<link rel=\"stylesheet\" type=\"text/css\" href=\"css.css\" />");
printf("</head>");
printf("<body style=\"\" lang=\"EN-US\" link=\"blue\" vlink=\"blue\">");
printf("<div class=\"Section1\">");
printf("<div style=\"margin-left: 30pt;\">");
printf("<div align=\"center\">");
printf("<table width=500; align=\"center\">");
printf("\r\n<table width=500;align=\"center\">");
printf("<form method=\"GET\" action=\"/cgi-bin/set_clock.cgi\">\r\n");
printf("<table width=500;align=\"center\">");
printf("<tr><td width=\"30\">硬盘</td>");
printf("<td width=\"280\">容量:%ld, 已用:%ld, 可用:%ld, 使用率:%ld%%</td><tr>", d_tot, d_used, d_available,d_percent);
printf("<tr><td width=\"30\">内存</td>");
printf("<td width=\"280\">容量:%ld, 已用:%ld, 可用:%ld, 使用率:%ld%%</td><tr>", r_tot, r_used, r_available,r_percent);
printf("</form>\r\n");
printf("\r\n</table>");
printf("<p> </p><p> </p>");
printf("</table>");
printf("</body>");
printf("</html>");
fflush(stdout);
return 0;
}