如何在创建文件时更新GTK GUI?

我正在尝试创建一个简单的GTK应用程序。只要某些文件是由不同的进程创建的,我就想在GUI上写东西。我想我不能在父进程中执行while(true),因为这会冻结GUI。相反,我想叉,检查文件是否存在,并控制GUI,但它似乎没有工作,我笨拙的代码如下:如何在创建文件时更新GTK GUI?

int check_for_files(){ 

FILE *fp;

int files_set;

char ch;

files_set = 0;

while(!files_set){

fp = fopen("file", "r");

if(fp != NULL){

content_length = 0;

while(ch=getc(fp) != EOF){

content_length++;

}

fclose(fp);

files_set = 1;

return files_set;

}

else{

files_set = 0;

}

}

return 1;

}

int main(int argc, char *argv[]) {

// Main function the get the application UI

GtkWidget *window;

GdkPixbuf *icon;

GtkWidget *grid;

gtk_init(&argc, &argv);

window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

gtk_window_set_default_size(GTK_WINDOW(window), 500, 300);

gtk_container_set_border_width(GTK_CONTAINER(window), 15);

gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);

int pid = fork();

if (pid == 0){

int files_set = check_for_files();

printf("files outside: %d\n",files_set);

gtk_window_set_title(GTK_WINDOW(window), "Files are present!");

}

else{

icon = create_pixbuf("net.png");

gtk_window_set_icon(GTK_WINDOW(window), icon);

// Get the grid

get_grid(window);

gtk_widget_show_all(window);

g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);

g_object_unref(icon);

gtk_main();

}

}

回答:

当您要执行I/O操作,看看gio,这是集成到GLib。所以你应该使用GFileMonitor,它使用inotify来通知文件系统的变化。 GFileMonitor的“说明”部分介绍了要使用的功能。

以上是 如何在创建文件时更新GTK GUI? 的全部内容, 来源链接: utcz.com/qa/261533.html

回到顶部