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

📄 main.c

📁 这是一个针对linux操作系统的任务管理器
💻 C
📖 第 1 页 / 共 2 页
字号:
        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 + -