- if ( i_ret < 0 && errno != EINTR )
- {
- msg_Warn( p_object, "select failed (%s)", strerror(errno) );
- }
+ close (fds[0]);
+
+ while (waitpid (pid, &i_status, 0) == -1);
+
+ if (WIFEXITED (i_status))
+ {
+ i_status = WEXITSTATUS (i_status);
+ if (i_status)
+ msg_Warn (p_object, "child %s (PID %d) exited with error code %d",
+ ppsz_argv[0], (int)pid, i_status);
+ }
+ else
+ if (WIFSIGNALED (i_status)) // <-- this should be redumdant a check
+ {
+ i_status = WTERMSIG (i_status);
+ msg_Warn (p_object, "child %s (PID %d) exited on signal %d (%s)",
+ ppsz_argv[0], (int)pid, i_status, strsignal (i_status));