Wrap waitpid to decode the exitcode and why your filter quit
#include <util/filter.h>
NEOERR *filter_wait(pid_t pid, int options, int *exitcode);
pid -> the process identifier to wait for
options -> the options to pass to waitpid (see wait(2))
filter_wait wraps the waitpid call and raises an error (with description) if the call failed. Note that if the ask for the exitcode and the process exited with a code other than zero, we don't raise an error. If you don't ask for the exitcode, and it is non-zero, we raise an error
exitcode -> the exitcode if the process existed normally
filter_wait(3), filter_create_fp(3), filter_create_fd