Thanks for your answer. Unfortunately, I'm running out of options: currently I'm using threads, but there is a nasty bug that makes my program crash sometimes. It is very subtle, because it hapens usually after being running for two-three days. It is a double free. I tried with Valgrind, but when I use it, the error doesn't trigger, which makes me suspect it is a race condition between both threads (valgrind ensures that only one thread runs each time). I checked all the code, and isolated everything as much as I could, and adding as many locks as I could imagine, trying to remove that bug, but its imposible, so I decided to separate the code in two independent processes to be able to use valgrind and finally find what is happening. But as you say, it seems I'll have to do something else...
On 01/09/15 15:12, Chris Vine wrote: > On Tue, 1 Sep 2015 13:54:34 +0200 > rastersoft <ras...@rastersoft.com> wrote: >> Hi all: >> >> I'm working on a project which, for several reasons, will use the >> Posix fork() call. The question is: if I have an active GTK main loop >> in the program before calling fork(), is there something I have to do >> after calling it in the child process? I know that I must NOT use Gtk >> calls in the child, but should I quit the main loop in the child? >> Should I quit before the Gtk main loop, create the child, and call it >> again? What can I do to don't loose registered callbacks and so on? > Because of gio, which uses background threads for some of its stuff > (in particular for its async i/o operations) all GTK+ programs are in > effect multi-threaded nowadays. This makes calling fork() problematic, > because as you probably know POSIX only permits async-signal-safe > functions to be called after a fork() and before an exec() in a > multi-threaded program. If you want to do anything other than a fork() > and an exec(), then start a thread not a new process. This leaves your > question redundant. > > For asynchronous tasks you might want to look at GTask (available from > glib-2.36). For an encapsulation of the fork()/exec() approach, see > also GSubProcess, available from glib-2.40. > > Chris > _______________________________________________ > gtk-app-devel-list mailing list > gtk-app-devel-list@gnome.org > https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list > -- Nos leemos RASTER (Linux user #228804) ras...@rastersoft.com http://www.rastersoft.com _______________________________________________ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list