内容:编写一个C程序,使用Linux下的图形库,分窗口显示三个并发进程的运行。
一个linux下多进程的实例,同时练习GTK编程。
分三个文件,分别是创建进程到主函数threeProc.c、建立子进程窗口的函数procBar.h和另外一个畸形窗口创建函数showImage.h。
实验过程:编辑源程序,将三个源程序和一个图片置于一个文件夹中,执行如下命令:注意命令:gcc -o sb *.c `pkg-config --cflags --libs gtk+-2.0`
编译命令中使用的单引号类型是很重要的。这里使用了“命令替换”。
命令替换(command substitution)使得可以捕获一个命令的输出而在另一个命令中替换它。
这个单引号不是回车键左边的那个,而是ESC键下面的那个。
源程序及图片文件:(也可以直接打包下载:http://download.youkuaiyun.com/detail/creazyapple/4088119)
/*
* threeProc.c
* SystemMonitor
* Created on: 2012-2-22
* Author: zhushengben
* Create threee processes ,
* Each process have it's own window , and just simply show a lab
* All the processes are synchronic.
* Authored by ZhuShengben hust
* 2012.2.14
*/
#include <stdio.h>
#include <unistd.h>
#include <gtk/gtk.h>
#include "proBar.h"
#include "showImage.h"
/*
* 如果你的 "delete_event" 信号处理函数返回 FALSE,GTK 会发出 "destroy" 信号。
*/
gint delete_event(GtkWidget *widget, GdkEvent *event, gpointer data)
{
/* 打印信息 */
// g_print("delete event occurred\n");
gtk_main_quit();
// return (TRUE);
}
/* destroy a window
* 另一个回调函数 */
void destroy(GtkWidget *widget, gpointer data)
{
gtk_main_quit();
}
void initProcWind(int argc, char *argv[], char *pst)
{
/* GtkWidget 是构件的存储类型 */
GtkWidget * window