On Mon, 2009-04-27 at 12:52 +0300, Tor Lillqvist wrote: > > My application invokes the lilypond program using the g_spawn... > > functions. This works fine on linux, but on windows the files created by > > lilypond are left locked when lilypond has exited. > > That sounds very odd and in fact impossible. Are you confusing file > protection with locking? Thank you for the quick and helpful reply. Having contstructed the minimal example, everything worked fine. For those listening in who need to create a glib standalone minimal example. I append the code I devised. Richard /************ first program, invoked by the one below *************/ #include <stdio.h>
/* program doit gcc test.c -o doit.exe */ int main(void) { printf("Opening the test file now\n"); FILE *fp = fopen("thetestfile","w"); if(fp==NULL) { printf("doit could not open the test file"); return -1; } printf("Writing to the test file now\n"); fprintf(fp, "hello"); fclose(fp); return 0; } /****************** second program, invoking the first *********************/ /* program test gcc test.c -o test.exe -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include /usr/lib/libglib-2.0.so */ #include <stdio.h> #include <glib.h> static GPid pid = -1; void finished(void) { g_spawn_close_pid (pid); FILE *fp = fopen("thetestfile","rw"); if(fp==NULL) { g_print("could not open\n"); exit(-1); } g_print("The file opens ok\n"); exit(0); } int main(void) { g_print("Starting the test\n"); gchar *arguments[] = { "doit.exe", NULL }; g_spawn_async_with_pipes (NULL, /* dir */ arguments, NULL, /* env */ G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD, NULL, /* child setup func */ NULL, /* user data */ &pid, NULL, NULL, /* stdout */ NULL, /* stderr */ NULL); g_child_watch_add (pid, (GChildWatchFunc)finished, NULL); g_print("looping for ever, Ctrl-C to kill\n"); GMainLoop* gm = g_main_loop_new(NULL, 0); g_main_loop_run(gm); } _______________________________________________ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list