When you're spawning a process within a program running a GUI, there's a few gotchas. You need to make sure the GUI keeps ticking and you probably need to communicate between the GUI and your extra process.
An elegant way of handling this is POE. It lets you hook into various GUI event loops (Gtk, perl/Tk, etc.). Check out this article on using POE with Gtk.
Another way of communicating between the GUI and the spawned process are watchers in the GUI, here's an article which uses an XML-defined GUI and Glib's add_watch method.