EXIT_FAILURE is system-specific, but it's guaranteed to be a valid exit status. I believe that's the point of it...on some systems 1 might not be valid, but EXIT_FAILURE is still guaranteed to be so it will be something besides a #define'd macro set to 1