2014-12-17 3 views
0

이 프로그램에서 'for loop'와 'gtk window'를 모두 갖고 싶습니다. 알다시피, 루프 끝에서 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; 
} 

답변

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와 루 분투 테스트 3.

관련 문제