Re: Using fork() in a GTK C/Vala application
- From: Chris Vine <chris cvine freeserve co uk>
- To: gtk-app-devel-list gnome org
- Subject: Re: Using fork() in a GTK C/Vala application
- Date: Tue, 1 Sep 2015 14:12:31 +0100
On Tue, 1 Sep 2015 13:54:34 +0200
rastersoft <raster 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
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]