• 大小: 11KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-06
  • 语言: 其他
  • 标签: 系统监视  

资源简介

华中科技大学操作系统课程设计专用,内含5个部分: 1.1 利用系统调用实现文件拷贝(含代码和makefile) 1.2 多进程编程,实现三个子进程窗口(含代码和makefile) 2 自己的系统调用,只有系统调用实现的代码,系统调用需要自己编译内核 3 字符设备驱动的编写(含代码和makefile) 4 GTK编写系统监视器,可以监测系统很多方面(含代码和makefile) 5 虚拟文件系统(实现的比较简单)(含代码和makefile) 说明:GTK实现的系统监视器,功能如下: 1.CPU各种信息,包括物理信息以及CPU利用率绘图 2.内存各种信息,包括利用率,内存使用率绘图等 3.进程信息,可以杀死进程,查看进程,以及运行新进程,同时可以查看进程详细信息 4.系统信息,关于系统的信息,如系统版本等 5.时间计时,开机时间以及运行时间计算,还有各种小功能 6.总代码量在1050行多一点

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#include “MenuBar.h“
#include “CPUinfo.h“
#include “Meminfo.h“
#include “Processinfo.h“
#include “Sysinfo.h“


//Create the main version window
void CreateVersion(GtkWidget *vbox);

void CreatePageFour(GtkWidget *notebook);
gint refresh_clock(gpointer data);


GtkWidget *statusbar;

int main(int argc char* argv[])
{
GtkWidget *window *main_vbox;
gtk_init(&argc &argv);

window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window) “System monitor“);
gtk_window_set_default_size(GTK_WINDOW(window) 800 600);
gtk_window_set_position(GTK_WINDOW(window) GTK_WIN_POS_CENTER);
gtk_widget_show(window);
g_signal_connect(G_object(window)“destroy“G_CALLBACK(gtk_main_quit)NULL);

main_vbox = gtk_vbox_new(FALSE 10);
gtk_container_set_border_width(GTK_CONTAINER(main_vbox) 5);
gtk_container_add(GTK_CONTAINER(window) main_vbox);
gtk_widget_show(main_vbox);

//Create menubar
CreateMenuBar(main_vbox);
CreateVersion(main_vbox);

gtk_timeout_add(500 refresh_cpu NULL);
gtk_timeout_add(500 refresh_mm NULL);
gtk_timeout_add(500 refresh_swap NULL);
gtk_widget_show_all(window);
gtk_main();
}

//Create the main version window
void CreateVersion(GtkWidget *vbox)
{
GtkWidget *notebook;
gint context_id;
notebook = gtk_notebook_new();
gtk_notebook_set_tab_pos((GtkNotebook *)notebook GTK_POS_TOP);
gtk_notebook_set_show_border((GtkNotebook *) notebook FALSE);
gtk_box_pack_start(GTK_BOX(vbox) notebook TRUE TRUE 0);
gtk_widget_show(notebook);
statusbar = gtk_statusbar_new();
gtk_box_pack_start(GTK_BOX(vbox) statusbar TRUE TRUE 0);
gtk_widget_show(statusbar);
context_id = gtk_statusbar_get_context_id(GTK_STATUSBAR(statusbar) “Timestatus“);
gtk_timeout_add(1000 refresh_clock GINT_TO_POINTER(context_id));
refresh_clock(GINT_TO_POINTER(context_id));

CreatePageOne(notebook);
CreatePageTwo(notebook);
CreatePageThree(notebook);
// CreatePageFour(notebook);
CreatePageFive(notebook);

gtk_notebook_set_current_page(GTK_NOTEBOOK(notebook) 1);

}


void CreatePageFour(GtkWidget *notebook)
{
GtkWidget *label *vbox *frame;

frame = gtk_frame_new(““);
gtk_container_set_border_width(GTK_CONTAINER(frame) 10);
gtk_widget_show(frame);

gtk_notebook_append_page(GTK_NOTEBOOK(notebook) frame gtk_label_new(“Page4“));
}

gint refresh_clock(gpointer data)
{
//GtkWidget *stbar = data;
time_t t;
t=time(NULL);
char msg[1000] temp[100];
char *buf *p;
buf = ctime(&t);
//there are some 
p = strtok(buf “\n“);

strcpy(msg buf);
//strcat(msg “        CPU used :“);
sprintf(temp “                     CPU used: %2.2lf%%“ cpu_rate * 100);
strcat(msg temp);
sprintf(temp “                     Memory used: %2.2lf%

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       6552  2015-03-12 23:29  4-mymonitor\CPUinfo.h

     文件       3204  2015-03-10 18:57  4-mymonitor\main.c

     文件         96  2015-03-12 19:41  4-mymonitor\makefile

     文件       7742  2015-03-12 23:38  4-mymonitor\Meminfo.h

     文件       2374  2015-03-12 23:33  4-mymonitor\MenuBar.h

     文件         31  2015-03-12 23:52  4-mymonitor\path

     文件       6984  2015-03-13 08:03  4-mymonitor\Processinfo.h

     文件       3783  2015-03-13 01:06  4-mymonitor\Sysinfo.h

     目录          0  2015-04-14 17:26  4-mymonitor

----------- ---------  ---------- -----  ----

                30766                    9


评论

共有 条评论