Here's the code for doing so: (Tested on Ubuntu 10.10)
Hope this helps!
#include <unistd.h>
#include <stdio.h>
int processMemUsage() {
int vm = 0;
FILE* fp = fopen("/proc/self/stat", "r");
if(fp == NULL) {
return vm;
}
int dummy;
char cmd[128], state[8];
fscanf(fp, "%d%s%s%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d",
&dummy, cmd, state, &dummy, &dummy, &dummy, &dummy,
&dummy, &dummy, &dummy, &dummy, &dummy, &dummy,
&dummy, &dummy, &dummy, &dummy, &dummy, &dummy,
&dummy, &dummy, &dummy);
unsigned long vmSize;
fscanf(fp, "%lu", &vmSize);
fclose(fp);
vm = (int) (vmSize >> 10);
return vm;
}
Hope this helps!