void gtk_pipe_open(void) { int res; GError *error = NULL; res=pipe(pipeAppli); if (res!=0) pipe_error("PIPE_APPLI CREATION"); res=pipe(pipeGtk); if (res!=0) pipe_error("PIPE_GTK CREATION"); if ((pid=fork())==0) { /*child*/ close(pipeGtk[1]); close(pipeAppli[0]); fpip_in=pipeGtk[0]; fpip_out= pipeAppli[1]; #if GTK_MAJOR_VERSION == 2 Launch_Gtk_Process(fpip_in); #else channel_in = g_io_channel_unix_new(fpip_in); channel_out = g_io_channel_unix_new(fpip_out); /* set to raw I/O, unbuffered */ g_io_channel_set_encoding(channel_in, NULL, &error); g_io_channel_set_encoding(channel_out, NULL, &error); g_io_channel_set_buffered(channel_in, FALSE); g_io_channel_set_buffered(channel_out, FALSE); Launch_Gtk_Process(channel_in); #endif /* Won't come back from here */ fprintf(stderr,"WARNING: come back from Gtk+\n"); exit(0); } close(pipeGtk[0]); close(pipeAppli[1]); fpip_in= pipeAppli[0]; fpip_out= pipeGtk[1]; #if GTK_MAJOR_VERSION == 3 /* channel_in = g_io_channel_unix_new(fpip_in); */ //channel_out = g_io_channel_unix_new(fpip_out); //g_io_channel_set_encoding(channel_in, NULL, &error); //g_io_channel_set_encoding(channel_out, NULL, &error); #endif }
void gtk_pipe_open(void) { int res; res=pipe(pipeAppli); if (res!=0) pipe_error("PIPE_APPLI CREATION"); res=pipe(pipeGtk); if (res!=0) pipe_error("PIPE_GTK CREATION"); if ((pid=fork())==0) { /*child*/ close(pipeGtk[1]); close(pipeAppli[0]); fpip_in=pipeGtk[0]; fpip_out= pipeAppli[1]; Launch_Gtk_Process(fpip_in); /* Won't come back from here */ fprintf(stderr,"WARNING: come back from Gtk+\n"); exit(0); } close(pipeGtk[0]); close(pipeAppli[1]); fpip_in= pipeAppli[0]; fpip_out= pipeGtk[1]; }