From a075b4b88cf32ccc48c0c491828070b46e672cbe Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Sun, 12 Oct 2003 05:48:34 +0000 Subject: [PATCH] ALSO report children than exited due to signals... and why... SVN revision: 7548 --- legacy/ecore/src/lib/ecore/Ecore.h | 3 +++ legacy/ecore/src/lib/ecore/ecore_signal.c | 24 ++++++++++++++--------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/legacy/ecore/src/lib/ecore/Ecore.h b/legacy/ecore/src/lib/ecore/Ecore.h index cd4b330aeb..7bab4c2e2b 100644 --- a/legacy/ecore/src/lib/ecore/Ecore.h +++ b/legacy/ecore/src/lib/ecore/Ecore.h @@ -47,6 +47,9 @@ extern "C" { pid_t pid; /**< The process ID of the process that exited */ int exit_code; /**< The exit code of the process */ Ecore_Exe *exe; /**< The handle to the exited process, or NULL if not found */ + int exit_signal; /** < The signal that caused the process to exit */ + char exited : 1; /** < set to 1 if the process exited of its own accord */ + char signalled : 1; /** < set to 1 id the process exited due to uncaught signal */ void *ext_data; /**< Extension data - not used */ }; diff --git a/legacy/ecore/src/lib/ecore/ecore_signal.c b/legacy/ecore/src/lib/ecore/ecore_signal.c index dd175449b6..d4cbbb629a 100644 --- a/legacy/ecore/src/lib/ecore/ecore_signal.c +++ b/legacy/ecore/src/lib/ecore/ecore_signal.c @@ -87,19 +87,25 @@ _ecore_signal_call(void) while ((pid = waitpid(-1, &status, WNOHANG)) > 0) { - if (WIFEXITED(status)) + Ecore_Event_Exe_Exit *e; + + e = _ecore_event_exe_exit_new(); + if (e) { - Ecore_Event_Exe_Exit *e; - - e = _ecore_event_exe_exit_new(); - if (e) + if (WIFEXITED(status)) { e->exit_code = WEXITSTATUS(status); - e->pid = pid; - e->exe = _ecore_exe_find(pid); - _ecore_event_add(ECORE_EVENT_EXE_EXIT, e, - _ecore_event_exe_exit_free, NULL); + e->exited = 1; } + else if (WIFSIGNALED(status)) + { + e->exit_signal = WTERMSIG(status); + e->signalled = 1; + } + e->pid = pid; + e->exe = _ecore_exe_find(pid); + _ecore_event_add(ECORE_EVENT_EXE_EXIT, e, + _ecore_event_exe_exit_free, NULL); } } sigchld_count--;