require 'gtk2' class Test_obj def initialize(t) @t=t end def my_sleep sleep(@t) end end main_loop=GLib::MainLoop::new(GLib::MainContext.default,true) w=Gtk::Window.new($0.split('/')[-1]) w.signal_connect('destroy') do main_loop.quit() end box=Gtk::VBox.new() w.add(box) 10.times do |v| box.pack_start(Gtk::Label::new("Label #{v+1}")) end btn=Gtk::Button::new('Fire') box.pack_start(btn,false,false) btn.signal_connect("clicked") do pid=fork do Process::daemon(true) t=Test_obj::new(10000) t.my_sleep() end Process::detach(pid) STDOUT.puts("Sub process started (#{pid}). Now exiting") main_loop.quit() end w.show_all() main_loop.run() STDOUT.puts("Exiting")