cleanup zombie process
diff --git a/objects/flash_bios_obj.c b/objects/flash_bios_obj.c
index 738ba86..b16aca0 100644
--- a/objects/flash_bios_obj.c
+++ b/objects/flash_bios_obj.c
@@ -14,6 +14,16 @@
 

 static GDBusObjectManagerServer *manager = NULL;

 

+void catch_child(int sig_num)

+{

+    /* when we get here, we know there's a zombie child waiting */

+    int child_status;

+

+    wait(&child_status);

+    printf("flasher exited.\n");

+}

+

+

 int update(Flash* flash, const char* obj_path)

 {

 	pid_t pid;

@@ -412,6 +422,7 @@
   guint id;

   loop = g_main_loop_new (NULL, FALSE);

 

+  signal(SIGCHLD, catch_child);

   id = g_bus_own_name (DBUS_TYPE,

                        dbus_name,

                        G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT |