develop a C program to apply the memory times and times, run with this shellprogram, then show the MemToal,MemFree,Active with excel file.
By using Linux (Centos 7 or 8) develop a C program to apply the memory times and times, run with this shellprogram, then show the MemToal,MemFree,Active with excel file.
Here are the codes for reference.
Code no.1:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
main(int argc, char *argv[])
{
void * p[100];
int i,times,msize;
if(argc!=3)
{
times=20;
msize=1024;
}
else
{
sscanf(argv[1],"%d",×);
sscanf(argv[2],"%d",&msize);
if(msize>10240)
msize=10240;
msize=1024*msize;
if(times>100)
times=100;
}
for( i=0; i<times; i++)
{
sleep(1);
p[i]=malloc(msize);
// printf("%x.",p[i]);
// fflush(stdout);
memset(p[i],'\0',msize);
}
for( i=0; i<times; i++)
{
free(p[i]);
p[i]=NULL;
}
}
Code no.2:
#!/bin/sh
TIMES=$1
MSIZE=$2
./memalloc $TIMES $MSIZE &
echo -e "MemTotal(kB)\tMemFree(kB)\tActive(kB)"
for i in {0 $TIMES}
do
mt=`grep "MemTotal" /proc/meminfo | awk '{ print $2 }'`
mf=`grep "MemFree" /proc/meminfo | awk '{ print $2 }'`
ma=`grep "Active:" /proc/meminfo | awk '{ print $2 }'`
echo -e "$mt\t\t$mf\t\t$ma"
sleep 1
done
The results will be similar to what's below
[root@o_s shell]# ./meminfo.sh
MemTotal(kB) MemFree(kB) Active(kB)
5571608 2870416 1098036
5571608 2870120 1098136
[root@o_s shell]# ./meminfo.sh
MemTotal(kB) MemFree(kB) Active(kB)
5571608 2870176 1098408
5571608 2869704 1098260
[root@o_s shell]#
Step by step
Solved in 2 steps