📄 interface.c~
字号:
/* * DO NOT EDIT THIS FILE - it is generated by Glade. */#ifdef HAVE_CONFIG_H# include <config.h>#endif#define GTK_ENABLE_BROKEN//在文本构件中使用#include "dirent.h"#include "fcntl.h"#include "time.h"#include "math.h"#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>#include <string.h>#include <stdio.h>#include "sys/file.h"#include <stdlib.h>#include <gdk/gdkkeysyms.h>#include <gtk/gtk.h>#include "callbacks.h"#include "interface.h"#include "support.h"#define GLADE_HOOKUP_OBJECT(component,widget,name) \ g_object_set_data_full (G_OBJECT (component), name, \ gtk_widget_ref (widget), (GDestroyNotify) gtk_widget_unref)#define GLADE_HOOKUP_OBJECT_NO_REF(component,widget,name) \ g_object_set_data (G_OBJECT (component), name, widget)struct Process{ char name[20]; char pro_id[5]; char cpu_take[5]; char mem_take[10]; }pro[200];GtkWidget *textview4;int select_name(char name[]){ int i; for(i=0;name[i]!=0;i++) if(isalpha(name[i])||name[i]=='.')/*判断字符c是否为英文字母*/ return 0; return 1; }void show_cpu_info(GtkWidget *textview1){//1 显示cpu信息 int cpu_fd,i; char buf[1000],buf1[1000]=""; char *p; cpu_fd=open("/proc/cpuinfo",O_RDONLY); read(cpu_fd,buf,1000); strcat(buf1,strtok(buf,"\n")); while(p=strtok(NULL,"\n")){/*分解字符串为一组标记串。buf为要分解的字符串,"\n"为分隔符字符串*/ strcat(buf1,"\n"); /*首次调用时,buf必须指向要分解的字符串,随后调用要把buf设成NULL*/ strcat(buf1,p); /* strtok在buf中查找包含在"\n"中的字符并用NULL('\0')来替换,直到找遍整个字符串。 返回指向下一个标记串。当没有标记串时则返回空字符NULL。*/ } gtk_text_buffer_set_text (gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview1)), buf1, -1);/*显示buf1的内容*/}void show_mem_info(GtkWidget *textview2){//2 显示内存信息 int mem_fd; char buf[1000],buf1[1000]=""; char *p; mem_fd=open("/proc/meminfo",O_RDONLY); read(mem_fd,buf,1000); strcat(buf1,strtok(buf,"\n")); while(p=strtok(NULL,"\n")){ strcat(buf1,"\n"); strcat(buf1,p); } gtk_text_buffer_set_text (gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview2)), buf1, -1);}void show_disk_info(GtkWidget *textview3){//3 显示硬盘信息 int disk_fd,i=4; char buf[1000],buf1[1000]=""; char *p; disk_fd=open("/proc/partitions",O_RDONLY); read(disk_fd,buf,1000); strcat(buf1,strtok(buf,"\n")); strcat(buf1,"\n"); while(i>0){ strcat(buf1,strtok(NULL,"\n")); strcat(buf1,"\n"); i--; } gtk_text_buffer_set_text (gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview3)), buf1, -1);}gint show_process_info(gpointer data){//4显示进程信息 DIR * dir; struct dirent * ptr; GtkWidget *label; GtkTextIter iter; int fdfrom; int total=0; int bytesread; char buffer[80]; char buf1[80]=""; char text_value[100]="进程总数 : "; char show[5]; char buff[50]=" "; int i=0; char path_statm[30]; char path_status[30]; gtk_text_buffer_set_text (gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview4)), buf1, -1); dir =opendir("/proc"); while((ptr = readdir(dir))!=NULL){ if(select_name(ptr->d_name)){ strcpy(pro[i].pro_id,ptr->d_name); i++; total++; } } printf("%d\n",total); sprintf(show,"%3d",total); strcat(text_value,show); strcat(text_value,"\n\t进程名称\t\t进程ID\t\t占用的内存\n"); closedir(dir); gtk_text_buffer_get_iter_at_offset (gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview4)), &iter, 0); gtk_text_buffer_insert (gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview4)), &iter, text_value, -1); for(i=0;i<total;i++){ strcpy(path_statm,"/proc/"); strcpy(path_status,"/proc/"); strcat (path_statm,pro[i].pro_id); strcat (path_statm,"/statm"); strcat (path_status,pro[i].pro_id); strcat (path_status,"/status"); fdfrom=open(path_status,O_RDONLY); bytesread=read(fdfrom,buffer,80); strtok(buffer,": "); strcpy(pro[i].name,strtok(NULL,"\n")); close(fdfrom); fdfrom=open(path_statm,O_RDONLY); bytesread=read(fdfrom,buffer,80); strcat(pro[i].mem_take,strtok(buffer," ")); strcat(pro[i].mem_take,"kb"); close(fdfrom); strcat(buff,pro[i].name); strcat(buff,"\t\t"); strcat(buff,pro[i].pro_id); strcat(buff,"\t\t"); strcat(buff,pro[i].mem_take); strcat(buff,"\n"); gtk_text_buffer_insert (gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview4)), &iter, buff, -1); strcpy(buff," "); } return TRUE;}/* 清除分配的内存,删除定时器(timer) */void destroy_progress1( GtkWidget *widget,gtk_text_buffer_get_iter_at_offset (gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview4)), &iter, 0); GtkWidget *textview4){ gtk_timeout_remove (timer); timer = 0; textview4= NULL; gtk_main_quit (); }void show_sys_info(GtkWidget *textview5){//5 显示综合信息 int sys_fd,i,hour,second,minute; char buf[2000]="",buf1[1000]; char *p; char showm[20]; int time_run; time_t timep; char *sys_info[]={"/proc/sys/kernel/hostname","/proc/version","/proc/uptime","/proc/uptime" }; strcat(buf,"hostname : "); sys_fd=open(sys_info[0],O_RDONLY); read(sys_fd,buf1,1000); strcat(buf,strtok(buf1,"\n")); strcat(buf,"\n"); strcat(buf,"\nkernel vertion : "); sys_fd=open(sys_info[1],O_RDONLY); read(sys_fd,buf1,1000); strcat(buf,strtok(buf1," ")); strcat(buf," "); strcat(buf,strtok(NULL," ")); strcat(buf," "); strcat(buf,strtok(NULL," ")); strcat(buf," "); strcat(buf,"\n"); strcat(buf,"\nstart time : "); sys_fd=open(sys_info[2],O_RDONLY); read(sys_fd,buf1,1000); time_run=atoi(strtok(buf1,".")); time(&timep); timep-=time_run; strcat(buf,ctime(&timep)); strcat(buf,"\nrun time : "); sys_fd=open(sys_info[2],O_RDONLY); read(sys_fd,buf1,1000); time_run=atoi(strtok(buf1,".")); hour=time_run/3600; minute=(time_run-hour*3600)/60; second=time_run%60; sprintf(showm,"%3d",hour); strcat(buf,showm); strcat(buf," hour"); sprintf(showm,"%3d",minute); strcat(buf,showm); strcat(buf," minute "); sprintf(showm,"%3d",second); strcat(buf,showm); strcat(buf," second"); gtk_text_buffer_set_text (gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview5)), buf, -1); }GtkWidget*create_window1 (void){ GtkWidget *window1; GtkWidget *fixed1; GtkWidget *menubar1; GtkWidget *menuitem1; GtkWidget *menu1; GtkWidget *restart; GtkWidget *poweroff; GtkWidget *quit; GtkWidget *menuitem2; GtkWidget *menu2; GtkWidget *searchproc; GtkWidget *killproc; GtkWidget *computerinfro; GtkWidget *menuitem3; GtkWidget *menu3; GtkWidget *menuitem4; GtkWidget *menu4; GtkWidget *about1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -