⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 interface.c~

📁 一个在LINUX下写的用gcc编译的进程管理程序
💻 C~
📖 第 1 页 / 共 2 页
字号:
/* * 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 + -