代码中可能常常需要使用Cpu和内存的信息,即用shell命令查询出来的再送到代码的字符串等变量中。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char achCmd[128] = {0};
FILE* pStream = NULL;
int a;
//strcpy(achCmd,"cat /proc/meminfo | grep MemTotal | awk -F " " '{print $2}'");
//system(achCmd);
//system("cat /proc/meminfo | grep MemTotal > tmp");
//查询操作系统
if( NULL != (pStream = popen("uname -s", "r")))
{
fgets(achCmd, sizeof(achCmd), pStream);
printf("os = %s",achCmd);
}
//查询cpu类型
//cat /proc/cpuinfo | grep 'model name' | uniq | awk -F ': ' '{print $2}'
if( NULL != (pStream = popen("cat /proc/cpuinfo | grep 'model name' | uniq | awk -F ': ' '{print $2}'", "r")))
{
fgets(achCmd, sizeof(achCmd), pStream);
printf("cpu type = %s",achCmd);
}
//查询core的个数
if( NULL != (pStream = popen("cat /proc/cpuinfo | grep 'processor' | wc -l", "r")))
{
fgets(achCmd, sizeof(achCmd), pStream);
a = atoi(achCmd);
printf("core num = %d\n",a);
}
//查询内存大小
if((pStream = popen("cat /proc/meminfo | grep MemTotal | tr -cd [0-9]","r")) != NULL)
{
fgets(achCmd, sizeof(achCmd), pStream);
printf("memory byte = %s\n",achCmd);
a = atoi(achCmd)/1024;
printf("memory = %dM",a);
}
pclose(pStream);
return 0;
}
kdvmt@kdvmt-dell:cany$ ./a.out
os = Linux
cpu type = Intel(R) Core(TM) i5-8500 CPU @ 3.00GHz
core num = 6
memory byte = 7959264B
memory = 7772M