📄 systemwatch.c
字号:
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 + -