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

📄 systemwatch.c

📁 这是一个基于linux系统的程序
💻 C
📖 第 1 页 / 共 2 页
字号:
gtk_table_attach_defaults(etable,label1,18,30,15,30);}
else{  button=gtk_button_new_with_label("kill the process");  gtk_signal_connect(GTK_OBJECT (button),"clicked",GTK_SIGNAL_FUNC (killprocess), NULL);     gtk_widget_show(button);  sprintf(ebuffer,"");  read(fd,ebuffer,500);  
  close(fd);  gtk_widget_show(win1);    label1=gtk_label_new(ebuffer);
  gtk_window_set_title(GTK_WINDOW(win1),"process status information");   gtk_table_attach_defaults(etable,label1,0,50,0,47);
   gtk_table_attach_defaults(etable,button,12,38,46,50);}
gtk_widget_set_usize(win1,600,500);
gtk_container_border_width(GTK_CONTAINER(win1),1);
gtk_container_add(GTK_CONTAINER(win1),label1);
gtk_widget_show(label1);
gtk_widget_show(win1);gtk_widget_show(etable);}void searchprocess(GtkWidget *widget, gpointer *data){                 //searchprocessGtkWidget * slabel;GtkWidget * stable;GtkWidget * swin;gtkentry=gtk_entry_new();gtk_signal_connect(GTK_OBJECT (gtkentry),"activate",GTK_SIGNAL_FUNC (entryenter), NULL);     slabel=gtk_label_new("please input the pid of the process:");swin=gtk_window_new(GTK_WINDOW_TOPLEVEL);gtk_window_set_title(GTK_WINDOW(swin),"search interface");
gtk_widget_set_usize(swin,400,200);
gtk_container_border_width(GTK_CONTAINER(swin),1);           
stable=gtk_table_new(20,30,TRUE);
gtk_container_add(GTK_CONTAINER(swin),stable);
gtk_table_attach_defaults(stable,slabel,10,26,5,8);
gtk_table_attach_defaults(stable,gtkentry,14,20,10,13);gtk_widget_show(slabel);  gtk_widget_show(gtkentry); gtk_widget_show(stable);    gtk_widget_show(swin);   }
void processdisplay(GtkWidget *widget, gpointer *data){                   //show processdisplay windowGtkWidget *winp;GtkWidget *tablep;GtkWidget *buttonp1,*buttonp2;winp=gtk_window_new(GTK_WINDOW_TOPLEVEL);buttonp1=gtk_button_new_with_label("search process and kill(optional)");buttonp2=gtk_button_new_with_label("show all process information ");
gtk_signal_connect(GTK_OBJECT (buttonp1),"clicked",GTK_SIGNAL_FUNC (searchprocess), NULL);   
gtk_signal_connect(GTK_OBJECT (buttonp2),"clicked",GTK_SIGNAL_FUNC (processinformation), NULL);   gtk_window_set_title(GTK_WINDOW(winp),"process operation");
gtk_widget_set_usize(winp,500,300);
gtk_container_border_width(GTK_CONTAINER(winp),1);           
gtk_widget_show(winp);  tablep=gtk_table_new(20,30,TRUE);
gtk_container_add(GTK_CONTAINER(winp),tablep);
gtk_widget_show(tablep);                            gtk_table_attach_defaults(tablep,buttonp1,10,24,5,8);
gtk_table_attach_defaults(tablep,buttonp2,10,24,13,16);gtk_widget_show(buttonp1);     gtk_widget_show(buttonp2);     }void showtime(GtkWidget *widget, gpointer data){ GtkWidget * label;GtkWidget * label2;GtkWidget * label3;   //show starttimeGtkWidget * table;GtkWidget * win;long start;int context_id4;int fd;int i;char buffer2[256];char buffer3[20];char *buffer1;if((fd=open("/proc/stat",O_RDONLY))==-1)
{
printf("Can not open proc file!\n");
return(-1);
}
read(fd,buffer2,256);
close(fd);buffer1=strchr(buffer2,'m');for(;!isdigit(*buffer1);buffer1++)		;for(i=0,buffer3[0]=(*buffer1);isdigit(*buffer1);i++,buffer1++)      buffer3[i]=(*buffer1);      buffer3[i]='\0';     label=gtk_label_new("System start time:");win=gtk_window_new(GTK_WINDOW_TOPLEVEL);label2=gtk_label_new("Running time:");start=atol(buffer3);label3=gtk_label_new(ctime(&start));gtk_window_set_title(GTK_WINDOW(win),"system time information");
gtk_widget_set_usize(win,400,350);
gtk_container_border_width(GTK_CONTAINER(win),1);           
g_signal_connect(G_OBJECT(win),"delete_event",G_CALLBACK(close_win),NULL); table=gtk_table_new(30,35,TRUE);
gtk_container_add(GTK_CONTAINER(win),table);
statusbar4=gtk_statusbar_new();          //show running timecontext_id4=gtk_statusbar_get_context_id(GTK_STATUSBAR(statusbar4),"running time");gtk_timeout_add(100,timeout_callback5,NULL);gtk_table_attach_defaults(GTK_TABLE(table),statusbar4,14,24,14,16);gtk_widget_show(statusbar4);        gtk_table_attach_defaults(table,label,3,14,5,8);gtk_table_attach_defaults(table,label2,3,12,13,16);
gtk_table_attach_defaults(table,label3,10,34,6,8);gtk_widget_show(label);  gtk_widget_show(label2);  gtk_widget_show(label3); gtk_widget_show(table);    gtk_widget_show(win);   }

void destroy (GtkWidget *widget, gpointer *data){
gtk_main_quit ();
}


void get_power_off(GtkWidget *widget, gpointer *data){                        //make the system close
sync();
system("halt");
}

void get_restart(GtkWidget *widget, gpointer *data){                            //make the system restart
sync();
system("shutdown -r now");
}


int get_cpuinfo(GtkWidget *widget, gpointer *data){                      //get_cpu_info
int fd;
char buffer[1024]="CPU infomation";
GtkWidget *win1,*label1;

if((fd=open("/proc/cpuinfo",O_RDONLY,0))==-1)
{
printf("Can not open proc file!\n");
return(-1);
}
read(fd,buffer,1024);
close(fd);

win1=gtk_window_new(GTK_WINDOW_TOPLEVEL);
label1=gtk_label_new(buffer);
gtk_window_set_title(GTK_WINDOW(win1),"CPU infomation");
gtk_widget_set_usize(win1,600,300);
gtk_container_border_width(GTK_CONTAINER(win1),1);
gtk_container_add(GTK_CONTAINER(win1),label1);
gtk_widget_show(label1);
gtk_widget_show(win1);
return 0;}



int get_mminfo(GtkWidget *widget, gpointer *data){                     //get_memory_info
int fd;
char buffer[1024]="Memory infomation";
GtkWidget *win1,*label1;

if((fd=open("/proc/meminfo",O_RDONLY,0))==-1){
printf("Can not open proc file!\n");
return(-1);
}
read(fd,buffer,1024);
close(fd);

win1=gtk_window_new(GTK_WINDOW_TOPLEVEL);
label1=gtk_label_new(buffer);
gtk_window_set_title(GTK_WINDOW(win1),"Memory infomation");
gtk_widget_set_usize(win1,700,400);
gtk_container_border_width(GTK_CONTAINER(win1),1);
gtk_container_add(GTK_CONTAINER(win1),label1);
gtk_widget_show(label1);
gtk_widget_show(win1);
return 0;}


int power_off(GtkWidget *widget, gpointer *data){                //power_off                     
GtkWidget *win1,*label1,*table1,*button_y,*button_n;
win1=gtk_window_new(GTK_WINDOW_TOPLEVEL);
label1=gtk_label_new("Are you sure?");
gtk_window_set_title(GTK_WINDOW(win1),"POWER OFF");
gtk_widget_set_usize(win1,240,180);
gtk_container_border_width(GTK_CONTAINER(win1),1);
gtk_widget_show(win1);

table1=gtk_table_new(20,24,TRUE);
gtk_container_add(GTK_CONTAINER(win1),table1);
gtk_widget_show(table1);   

gtk_table_attach_defaults(table1,label1,8,16,7,11);
gtk_widget_show(label1);

button_y=gtk_button_new_with_label ("Yes");
gtk_table_attach_defaults(table1,button_y,3,9,14,17);
gtk_widget_show(button_y);
gtk_signal_connect(GTK_OBJECT(button_y),"clicked",GTK_SIGNAL_FUNC(get_power_off), NULL);  

button_n=gtk_button_new_with_label ("No");
gtk_table_attach_defaults(table1,button_n,15,21,14,17);
gtk_widget_show(button_n);
gtk_signal_connect(GTK_OBJECT(button_n),"clicked",GTK_SIGNAL_FUNC (close_win), win1); 

}

int restart(GtkWidget *widget, gpointer *data){                   //restart        
GtkWidget *win1,*label1,*table1,*button_y,*button_n;
win1=gtk_window_new(GTK_WINDOW_TOPLEVEL);
label1=gtk_label_new("Are you sure?");
gtk_window_set_title(GTK_WINDOW(win1),"RESTART");
gtk_widget_set_usize(win1,240,180);
gtk_container_border_width(GTK_CONTAINER(win1),1);
gtk_widget_show(win1);

table1=gtk_table_new(20,24,TRUE);
gtk_container_add(GTK_CONTAINER(win1),table1);
gtk_widget_show(table1);   

gtk_table_attach_defaults(table1,label1,8,16,7,11);
gtk_widget_show(label1);

button_y=gtk_button_new_with_label ("Yes");
gtk_table_attach_defaults(table1,button_y,3,9,14,17);
gtk_widget_show(button_y);
gtk_signal_connect(GTK_OBJECT(button_y),"clicked",GTK_SIGNAL_FUNC(get_restart), NULL);  

button_n=gtk_button_new_with_label ("No");
gtk_table_attach_defaults(table1,button_n,15,21,14,17);
gtk_widget_show(button_n);
gtk_signal_connect(GTK_OBJECT(button_n),"clicked",GTK_SIGNAL_FUNC (close_win), win1); 

}




int main (int argc, char *argv[])                              //main         
{

GtkWidget *window;GtkWidget *vlabel;GtkWidget *hostlabel;
GtkWidget *table;
GtkWidget *button_cpu;
GtkWidget *button_mm;
GtkWidget *button_poweroff;
GtkWidget *button_restart;
GtkWidget *calendar;

char      vbuffer[22];  //read  versionchar      nbuffer[24];  //read  hostname
int       fd;          //version file descriptorint       fd1;         //hostname file descriptor
int       context_id1;int       context_id2;int       context_id3;
gtk_init (&argc, &argv);sprintf(vbuffer,"");sprintf(nbuffer,"");

window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_signal_connect (GTK_OBJECT (window), "destroy",GTK_SIGNAL_FUNC (destroy), NULL);
gtk_window_set_title(GTK_WINDOW(window),"procfs infomation");
gtk_widget_set_usize(window,800,500);
gtk_container_border_width(GTK_CONTAINER(window),1);            //main window build
           

table=gtk_table_new(50,55,TRUE);
gtk_container_add(GTK_CONTAINER(window),table);
                            //table buildif((fd=open("/proc/version",O_RDONLY,0))==-1)
{
printf("Can not open proc file!\n");
return(-1);
}
read(fd,vbuffer,22);
close(fd);
vlabel=gtk_label_new(vbuffer);                  gtk_table_attach_defaults(table,vlabel,0,55,0,2);gtk_widget_show(vlabel);                       //version label builtif((fd1=open("/proc/sys/kernel/hostname",O_RDONLY,0))==-1)
{
printf("Can not open proc file!\n");
return(-1);
}
read(fd1,nbuffer,24);
close(fd1);
hostlabel=gtk_label_new(nbuffer);                  gtk_table_attach_defaults(table,hostlabel,0,55,3,5);gtk_widget_show(hostlabel);                    //hostname label buildcalendar=gtk_calendar_new();gtk_table_attach_defaults(table,calendar,2,23,10,34);gtk_widget_show(calendar);                     //calendar  build                  
                                                           
button_cpu=gtk_button_new_with_label ("CPU infomation");
gtk_table_attach_defaults(table,button_cpu,2,12,6,9);
gtk_widget_show(button_cpu);
gtk_signal_connect(GTK_OBJECT (button_cpu),"clicked",GTK_SIGNAL_FUNC (get_cpuinfo), NULL);       //button_cpu  build

button_mm=gtk_button_new_with_label ("Memory infomation");
gtk_table_attach_defaults(table,button_mm,13,23,6,9);
gtk_widget_show(button_mm);
gtk_signal_connect(GTK_OBJECT (button_mm),"clicked",GTK_SIGNAL_FUNC (get_mminfo), NULL);       //button_mm  build
GtkWidget* labeltime;labeltime=gtk_label_new("CURRENTTIME:");gtk_table_attach_defaults(table,labeltime,2,7,35,37);gtk_widget_show(labeltime);statusbar1=gtk_statusbar_new();context_id1=gtk_statusbar_get_context_id(GTK_STATUSBAR(statusbar1),"currenttime");gtk_timeout_add(200,timeout_callback1,NULL);gtk_table_attach_defaults(GTK_TABLE(table),statusbar1,8,23,35,38);gtk_widget_show(statusbar1);                                                         //label and statusbar1 to show currenttimeGtkWidget* labelrate;labelrate=gtk_label_new("CPURATE:");gtk_table_attach_defaults(table,labelrate,2,7,40,42);gtk_widget_show(labelrate);statusbar2=gtk_statusbar_new();context_id2=gtk_statusbar_get_context_id(GTK_STATUSBAR(statusbar2),"cpurate");gtk_timeout_add(800,GTK_SIGNAL_FUNC(timeout_callback2),context_id2);gtk_table_attach_defaults(table,statusbar2,8,30,40,43);gtk_widget_show(statusbar2);                                                         //label and statusbar2 to show cpu rateGtkWidget* labelmrate;labelmrate=gtk_label_new("MEMORYRATE:");gtk_table_attach_defaults(table,labelmrate,2,7,45,47);gtk_widget_show(labelmrate);statusbar3=gtk_statusbar_new();context_id3=gtk_statusbar_get_context_id(GTK_STATUSBAR(statusbar3),"memory rate");gtk_timeout_add(800,GTK_SIGNAL_FUNC(timeout_callback3),context_id3);gtk_table_attach_defaults(table,statusbar3,8,27,45,48);gtk_widget_show(statusbar3);                                                         //label and statusbar3 to show memory rateGtkWidget* frame;frame = gtk_frame_new(NULL);gtk_container_add(GTK_CONTAINER(window), frame);gtk_frame_set_label( GTK_FRAME(frame), "CS 0305 XUJIAQIANG   NUMBER:012003004103" );gtk_frame_set_label_align( frame,0,1.0);labelt=gtk_label_new("OS DESIGN : TASK SUPERVISOR");gtk_container_add(GTK_CONTAINER(frame), labelt);gtk_timeout_add(1000,GTK_SIGNAL_FUNC(timeout_callback6),NULL);gtk_table_attach_defaults(table,frame,30,52,26,42);gtk_widget_show(labelt);gtk_widget_show(frame); GtkWidget *pbutton;pbutton=gtk_button_new_with_label("PROCESS OPERATION (search , show info , kill)");gtk_table_attach_defaults(table,pbutton,30,52,6,9);gtk_signal_connect(GTK_OBJECT (pbutton),"clicked",GTK_SIGNAL_FUNC (processdisplay), NULL);    gtk_widget_show(pbutton);  GtkWidget *pbutton1;pbutton1=gtk_button_new_with_label("CPU RATE GRAPHIC DISPLAY");gtk_table_attach_defaults(table,pbutton1,30,52,11,14);gtk_signal_connect(GTK_OBJECT (pbutton1),"clicked",GTK_SIGNAL_FUNC (cpuratedisplay), NULL);    gtk_widget_show(pbutton1);  GtkWidget *pbutton2;pbutton2=gtk_button_new_with_label("IMPLEMENT A PROGRESS");gtk_table_attach_defaults(table,pbutton2,30,52,16,19);gtk_signal_connect(GTK_OBJECT (pbutton2),"clicked",GTK_SIGNAL_FUNC (implementprocess), NULL);    gtk_widget_show(pbutton2);  GtkWidget *pbutton3;pbutton3=gtk_button_new_with_label("SYSTEM TIME DISPLAY");gtk_table_attach_defaults(table,pbutton3,30,52,21,24);gtk_signal_connect(GTK_OBJECT (pbutton3),"clicked",GTK_SIGNAL_FUNC (showtime), NULL);    gtk_widget_show(pbutton3);  

button_poweroff=gtk_button_new_with_label ("POWER OFF");
gtk_table_attach_defaults(table,button_poweroff,34,44,47,50);
gtk_widget_show(button_poweroff);
gtk_signal_connect(GTK_OBJECT (button_poweroff),"clicked",GTK_SIGNAL_FUNC (power_off), NULL);       //button_poweroff

button_restart=gtk_button_new_with_label ("RESTART");
gtk_table_attach_defaults(table,button_restart,45,55,47,50);
gtk_widget_show(button_restart);
gtk_signal_connect(GTK_OBJECT (button_restart),"clicked",GTK_SIGNAL_FUNC (restart), NULL);       //button_restart
gtk_widget_show(table); gtk_widget_show(window);   
gtk_main ();
    
return 0;
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -