实验目的
通过本实验,了解Linux系统的组织和行为,观察各种存储系统状态信息的内核变量;熟悉这些结构与信息。
实验内容
使用gcc编译并运行程序test1.c 新建工程,
使用codeblocks编程实现对meminfo/ loadavg/ interrupts/ filesystem的观测。
完成实验报告,报告里面需要记录实验详细过程,并对test1和自建工程里面观察到的内核信息(cpuinfo /version /stat /uptime/ meminfo /loadavg /interrupts /filesystem进行解读。
此文章仅提供实验内容2的代码:
#include <stdio.h>#include <string.h>#include <time.h>#include <stdlib.h>
void meminfo();void loadavg();void interrupts();void filesystems();
int main(int argc, char *argv[]) {
meminfo();
loadavg();
interrupts();
filesystems();
return 0;
}
void meminfo() {
FILE *fp = NULL;
char string[1024];
fp = fopen("/proc/meminfo", "r");
if (fp == NULL) {
printf("open /proc/meminfo failed\n");
return;
}
while (fgets(string, sizeof(string), fp)) {
printf("%s", string);
}
fclose(fp);
}
void loadavg() {
FILE *fp = NULL;
char string[1024];
fp = fopen("/proc/loadavg", "r");
if (fp == NULL) {
printf("open /proc/loadavg failed\n");
return;
}
while (fgets(string, sizeof(string), fp)) {
printf("%s", string);
}
fclose(fp);
}
void interrupts() {
FILE *fp = NULL;
char string[1024];
fp = fopen("/proc/interrupts", "r");
if (fp == NULL) {
printf("open /proc/interrupts failed\n");
return;
}
while (fgets(string, sizeof(string), fp)) {
printf("%s", string);
}
fclose(fp);
}
void filesystems() {
FILE *fp = NULL;
char string[1024];
fp = fopen("/proc/filesystems", "r");
if (fp == NULL) {
printf("open /proc/filesystems failed\n");
return;
}
while (fgets(string, sizeof(string), fp)) {
printf("%s", string);
}
}