See Watching long processes through CGI (Aug 02), you can use the same technique with Proc::Background, so in the background-ed process you update the cache with a tick/fraction, and in the Gtk2 program you set a timer ( 1 sec ) and fetch the fraction from the session/cache