这个是课程设计的一个作业,我用的是该死的RadHad9.03,单个窗口程序运行都没有错误,但是放到一起就不能弹出窗口,放到别的系统(如debian)下就没有这个问题!真是该死!(注:现在问题已经解决)
1,窗口程序:
#include <gtk/gtk.h>
#include <unistd.h>
#include <sys/types.h>
void destroy (GtkWidget *widget,gpointer *data)
{
gtk_main_quit();
}
int main (int argc, char *argv[])
{
GtkWidget *window;
GtkWidget *label;
GtkWidget *vbox;
GtkWidget *frame;
gtk_init (&argc,&argv);
argc=1; /*由此处向下2行为修改部分,解决无法同时显示问题*/
argv[0]="./proc"/*proc为主函数的名字*/
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW (window), "The First Window");
vbox = gtk_vbox_new (FALSE,20);
gtk_container_add(GTK_CONTAINER (window),vbox);
frame = gtk_frame_new ("The First Label");
label = gtk_label_new ("================Hello================");
gtk_container_add (GTK_CONTAINER (frame),label);
gtk_box_pack_start(GTK_BOX (vbox),frame,FALSE,FALSE,0);
gtk_signal_connect(GTK_OBJECT(window),"destroy",GTK_SIGNAL_FUNC (destroy),NULL);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
(这是个例子,其他两个可以和这个完全一样)
2,主程序:
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
main()
{
pid_t pid1,pid2;
pid1=fork();
if(pid1==0)
{
puts("The First Window Created\n");
execv("./hello",NULL);
}
else
{
pid2=fork();
if(pid2==0)
{
puts("The Second Window Created\n");
execv("./haii",NULL);
}
else
{
puts("The Third Window Created\n");
execv("./heii",NULL);
}
}
}