📄 main.c
字号:
buf3[i+1]='\0'; fclose(fp); return buf3;}void get_proc_info(GtkWidget *clist){ DIR *dir; struct dirent *ptr; int i,j; FILE *fp; char buf[1024]; char _buffer[1024]; char *buffer=_buffer; char proc_pid[1024]; char proc_name[1024]; char proc_stat[1024]; char proc_pri[1024]; char proc_takeup[1024]; char text[5][1024]; gchar *txt[5]; clist=gtk_clist_new(5); gtk_clist_set_column_title(GTK_CLIST(clist),0,"PID"); gtk_clist_set_column_title(GTK_CLIST(clist),1,"名称"); gtk_clist_set_column_title(GTK_CLIST(clist),2,"状态"); gtk_clist_set_column_title(GTK_CLIST(clist),3,"优先级"); gtk_clist_set_column_title(GTK_CLIST(clist),4,"占用内存"); dir=opendir("/proc"); while(ptr=readdir(dir)){ printf("%s\n",ptr->d_name); if((ptr->d_name)[0]>=48&&(ptr->d_name)[0]<=57){ sprintf(buf,"/proc/%s/stat",ptr->d_name); fp=fopen(buf,"r"); fgets(buffer,1024,fp); fclose(fp); for(i=0;i<1024;i++){ if(buffer[i]==' ') break; } buffer[i]='\0'; strcpy(proc_pid,buffer); i++; buffer+=i; for(i=0;i<1024;i++){ if(buffer[i]==' ') break; } buffer[i]='\0'; strcpy(proc_name,buffer); i++; buffer+=i; for(i=0;i<1024;i++){ if(buffer[i]==' ') break; } buffer[i]='\0'; strcpy(proc_stat,buffer); for(j=0;i<1024&&j<14;i++){ if(buffer[i]==' ') j++; } buffer+=i; for(i=0;i<1024;i++){ if(buffer[i]==' ') break; } buffer[i]='\0'; strcpy(proc_pri,buffer); for(j=0;i<1024&&j<4;i++){ if(buffer[i]==' ') j++; } buffer+=i; for(i=0;i<1024;i++){ if(buffer[i]==' ') break; } buffer[i]='\0'; strcpy(proc_takeup,buffer); sprintf(text[0],"%s",proc_pid); sprintf(text[1],"%s",proc_name); sprintf(text[2],"%s",proc_stat); sprintf(text[3],"%s",proc_pri); sprintf(text[4],"%s",proc_takeup); printf("%s,%s,%s,%s,%s\n",proc_pid,proc_name,proc_stat,proc_pri,proc_takeup); txt[0]=text[0]; txt[1]=text[1]; txt[2]=text[2]; txt[3]=text[3]; txt[4]=text[4]; gtk_clist_append(GTK_CLIST(clist),txt); } } closedir(dir); return;}int main( int argc,char *argv[] ){ GtkWidget *window; GtkWidget *button1; GtkWidget *button2; GtkWidget *button3; GtkWidget *table; GtkWidget *notebook; GtkWidget *frame; GtkWidget *frame2; GtkWidget *vbox; GtkWidget *hbox; GtkWidget *label; GtkWidget *clist; char bufferf1[1000]; char bufferf2[1000]; char bufferl[10]; char buf1[256],buf2[256],buf3[256],buf4[256]; float temp[3]={0.0,0.0,0.0}; gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), "系统监视器"); gtk_widget_set_size_request (window, 550, 400); g_signal_connect (G_OBJECT (window), "delete_event", G_CALLBACK (delete_event), NULL); gtk_container_set_border_width (GTK_CONTAINER (window), 10); table = gtk_table_new (3, 6, FALSE); gtk_container_add (GTK_CONTAINER (window), table); /* 创建一个新的笔记本,将标签页放在顶部 */ notebook = gtk_notebook_new (); gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook), GTK_POS_TOP); gtk_table_attach_defaults (GTK_TABLE (table), notebook, 0, 6, 0, 1); gtk_widget_show (notebook); /* 建立内存资源选项卡 */ sprintf(bufferf1, "CPU"); sprintf(bufferf2,"内存和交换分区"); sprintf(bufferl, "内存资源"); vbox = gtk_vbox_new(FALSE,0); frame = gtk_frame_new (bufferf1); gtk_container_set_border_width (GTK_CONTAINER (frame), 10); gtk_widget_set_size_request (frame, 500, 150); ssslabel = gtk_label_new (""); gtk_container_add (GTK_CONTAINER (frame), ssslabel); gtk_widget_show (ssslabel); gtk_box_pack_start(GTK_BOX(vbox),frame,FALSE,FALSE,5); gtk_widget_show (frame); frame2 = gtk_frame_new (bufferf2); gtk_container_set_border_width (GTK_CONTAINER (frame2), 10); gtk_widget_set_size_request (frame2, 500, 150); rrrlabel = gtk_label_new (""); gtk_container_add (GTK_CONTAINER (frame2), rrrlabel); gtk_widget_show (rrrlabel); gtk_box_pack_start(GTK_BOX(vbox),frame2,FALSE,FALSE,5); gtk_widget_show (frame2); gtk_widget_show (vbox); label = gtk_label_new (bufferl); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), vbox, label); /*建立进程信息选项卡*/ sprintf(bufferl, "进程信息"); hbox=gtk_hbox_new(FALSE, 5); get_proc_info(clist); gtk_box_pack_start(GTK_BOX(hbox), clist, TRUE, TRUE, 5); vbox=gtk_vbox_new(FALSE, 5); frame = gtk_frame_new (bufferl); gtk_widget_set_size_request (frame, 100, 215); gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 10); button1 = gtk_button_new_with_label("结束进程"); g_signal_connect (G_OBJECT (button1), "clicked",G_CALLBACK (delete_event), "结束进程"); gtk_box_pack_start(GTK_BOX(vbox), button1, FALSE, FALSE, 10); button2 = gtk_button_new_with_label("刷新"); g_signal_connect (G_OBJECT (button2), "clicked",G_CALLBACK (delete_event), "刷新"); gtk_box_pack_start(GTK_BOX(vbox), button2, FALSE, FALSE, 10); gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 5); gtk_widget_show_all(hbox); label = gtk_label_new (bufferl); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), hbox, label); /*建立模块信息选项卡*/ sprintf(bufferl, "模块信息"); vbox = gtk_vbox_new(FALSE,0); //list = create_list (); //gtk_box_pack_start(GTK_BOX(vbox), list, TRUE, TRUE, 5); hbox=gtk_hbox_new(FALSE, 5); button1 = gtk_button_new_with_label("装载模块"); g_signal_connect (G_OBJECT (button1), "clicked",G_CALLBACK (delete_event), "装载模块"); gtk_box_pack_start(GTK_BOX(hbox), button1, FALSE, FALSE, 50); button2 = gtk_button_new_with_label("卸载模块"); g_signal_connect (G_OBJECT (button2), "clicked",G_CALLBACK (delete_event), "卸载模块"); gtk_box_pack_start(GTK_BOX(hbox), button2, FALSE, FALSE, 50); button1 = gtk_button_new_with_label("刷新"); g_signal_connect (G_OBJECT (button1), "clicked",G_CALLBACK (delete_event), "刷新"); gtk_box_pack_start(GTK_BOX(hbox), button1, FALSE, FALSE, 50); gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 5); gtk_widget_show_all(vbox); label = gtk_label_new (bufferl); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), vbox, label); /*建立系统信息选项卡*/ sprintf(bufferf1, "处理器信息"); sprintf(bufferf2,"操作系统信息"); sprintf(bufferl, "系统信息"); vbox = gtk_vbox_new(FALSE,0); frame = gtk_frame_new (bufferf1); gtk_container_set_border_width (GTK_CONTAINER (frame), 10); gtk_widget_set_size_request (frame, 500, 150); sprintf(bufferf1, "CPU名称:%s\nCPU类型:%s\nCPU频率:%s MHz\nCache大小:%s\n",get_cpu_name(buf1),get_cpu_type(buf2),get_cpu_f(buf3),get_cache_size(buf4)); label = gtk_label_new (bufferf1); gtk_container_add (GTK_CONTAINER (frame), label); gtk_widget_show (label); gtk_box_pack_start(GTK_BOX(vbox),frame,FALSE,FALSE,5); gtk_widget_show (frame); frame2 = gtk_frame_new (bufferf2); gtk_container_set_border_width (GTK_CONTAINER (frame2), 10); gtk_widget_set_size_request (frame2, 500, 150); sprintf(bufferf1, "操作系统类型:%s\n操作系统版本:%s\nGCC编译器版本:%s\n",get_system_type(buf1),get_system_version(buf2),get_gcc_version(buf3)); label = gtk_label_new (bufferf1); gtk_container_add (GTK_CONTAINER (frame2), label); gtk_widget_show (label); gtk_box_pack_start(GTK_BOX(vbox),frame2,FALSE,FALSE,5); gtk_widget_show (frame2); gtk_widget_show (vbox); label = gtk_label_new (bufferl); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), vbox, label); /*建立说明选项卡*/ sprintf(bufferf1, "欢迎使用"); sprintf(bufferf2, "作者:夏天\n\n\n信息安全0603\n\n\n012006015519\n\n\nEmail:godfather88@tom.com\n\n\n"); sprintf(bufferl, "说明"); hbox=gtk_hbox_new(FALSE, 5); frame = gtk_frame_new (bufferf1); label = gtk_label_new (bufferf2); gtk_container_add (GTK_CONTAINER (frame), label); gtk_box_pack_start(GTK_BOX(hbox), frame, TRUE, TRUE, 15); vbox=gtk_vbox_new(FALSE, 5); button1 = gtk_button_new_with_label("重启"); g_signal_connect (G_OBJECT (button1), "clicked",G_CALLBACK (restart), "重启"); gtk_box_pack_start(GTK_BOX(vbox), button1, TRUE, TRUE, 35); button2 = gtk_button_new_with_label("关机"); g_signal_connect (G_OBJECT (button2), "clicked",G_CALLBACK (shutdown), "关机"); gtk_box_pack_start(GTK_BOX(vbox), button2, TRUE, TRUE, 35); button3 = gtk_button_new_with_label("退出"); g_signal_connect (G_OBJECT (button3), "clicked",G_CALLBACK (delete_event), "退出"); gtk_box_pack_start(GTK_BOX(vbox), button3, TRUE, TRUE, 35); gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 80); gtk_widget_show_all(hbox); label = gtk_label_new (bufferl); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), hbox, label); /* 设置起始页(第1页) */ gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), 0); gtk_widget_show (table); gtk_widget_show (window); gtk_timeout_add(1000,func,temp); gtk_main (); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -