diff --git a/makefile b/makefile new file mode 100644 index 0000000..937bc29 --- /dev/null +++ b/makefile @@ -0,0 +1,6 @@ +build: + meson setup build + ninja -C build + +clean: + rm -rf build diff --git a/reaper.cpp b/reaper.cpp index 8fff359..bcbf144 100644 --- a/reaper.cpp +++ b/reaper.cpp @@ -52,9 +52,16 @@ int main( int argc, char **argv ) } pid_t wait_ret; + int child_status; + bool child_failed = false; while( true ) { - wait_ret = wait( NULL ); + wait_ret = wait( &child_status ); + + if ( child_status != 0 ) + { + child_failed = true; + } if ( wait_ret == -1 && errno == ECHILD ) { @@ -62,4 +69,11 @@ int main( int argc, char **argv ) break; } } + + if ( child_failed ) + { + exit ( 1 ); + } else { + exit ( 0 ); + } }