Warning about reaped children
- From: Federico Mena Quintero <federico novell com>
- To: GTK+ development mailing list <gtk-devel-list gnome org>
- Subject: Warning about reaped children
- Date: Thu, 29 Mar 2007 15:45:10 -0600
Hi,
I forgot to pass G_SPAWN_DO_NOT_REAP_CHILD to g_spawn_async_with_pipes()
and ended up scratching my head about why my GChildWatch callback wasn't
firing. After some hot strace action and RTFM, I added that flag and
everything worked perfectly. Do we need a warning like the one in the
attached patch?
Federico
--- gmain.c~ 2007-01-22 11:12:44.000000000 -0600
+++ gmain.c 2007-03-29 15:38:01.000000000 -0600
@@ -3605,12 +3605,21 @@ check_for_child_exited (GSource *source)
if (child_watch_source->count < count)
{
gint child_status;
+ GPid pid;
- if (waitpid (child_watch_source->pid, &child_status, WNOHANG) > 0)
+ pid = waitpid (child_watch_source->pid, &child_status, WNOHANG);
+
+ if (pid > 0)
{
child_watch_source->child_status = child_status;
child_watch_source->child_exited = TRUE;
}
+ else if (pid == -1 && errno == ECHILD)
+ g_warning ("waitpid() for process %d returned ECHILD. Did you launch the process "
+ "with g_spawn_async*() but forget to pass G_SPAWN_DO_NOT_REAP_CHILD? "
+ "The notification about child termination will not be emitted!",
+ child_watch_source->pid);
+
child_watch_source->count = count;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]