繁体   English   中英

如何在不崩溃的情况下运行该程序?

[英]how can I run this program without crashing in gtk?

我想在此程序中同时包含“ for循环”和“ gtk窗口”。 如您所知,循环结束后,gtk窗口将打开。但是我希望同时拥有它们。

我怎样才能做到这一点?

#include <gtk/gtk.h>
#include<stdio.h>
int main( int argc, char *argv[])
{
int i;
  GtkWidget *window;
  gtk_init(&argc, &argv);
  window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
  gtk_window_set_title(GTK_WINDOW(window), "markup label");
    getchar();
    for(i=1;i<10;i++)
    {
        printf("%d",i);
      getchar();

    }
  gtk_window_set_default_size(GTK_WINDOW(window), 300, 100);

  g_signal_connect(window, "destroy",
      G_CALLBACK (gtk_main_quit), NULL);
  gtk_widget_show(window);
  gtk_main();
  return 0;
}

那么,线程呢:

#include <stdio.h>
#include <gtk/gtk.h>
#include <pthread.h>
void * go(void *threadid)
{

    int i;
    for(i=1;i<10000000;i++)
    {
        printf("%d\n",i);
    }
    pthread_exit(NULL);
}

int main( int argc, char *argv[])
{
    int i;
    GtkWidget *window;
    gtk_init(&argc, &argv);
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
    gtk_window_set_title(GTK_WINDOW(window), "markup label");
    gtk_window_set_default_size(GTK_WINDOW(window), 300, 100);
    g_signal_connect(window, "destroy",
                     G_CALLBACK (gtk_main_quit), NULL);

    pthread_t t;
    int rc = pthread_create(&t , NULL , go ,NULL);
    if (rc){
        printf("ERROR; return code from pthread_create() is %d\n", rc);
        exit(-1);
    }

    gtk_widget_show(window);
    gtk_main();
    return 0;
}

编译 :

gcc -Wall -g  main.c -o my_gtk `pkg-config --cflags gtk+-3.0` `pkg-config --libs gtk+-3.0`


使用gtk在lubuntu上进行了测试3。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM