ttn 2004-05-09The exit value of a program returning to the shell on unixoid systems istypically 0 for success, and non-0 (such as 1) for failure. For vms it isodd (1,3,5...) for success, even (0,2,4...) for failure.This holds from the point of view of the "shell" (in quotes because vms has adifferent dispatch model that is not explained further here).From the point of view of the program, nowadays stdlib.h on both type ofsystems provides macros `EXIT_SUCCESS' and `EXIT_FAILURE' that should DTRT.NB: The numerical values of these macros DO NOT need to fulfill the the exitvalue requirements outlined in the first paragraph! That is the job of the`exit' function. Thus, this kind of construct shows misunderstanding: #ifdef VMS exit (1); #else exit (0); #endifValues aside from EXIT_SUCCESS and EXIT_FAILURE are tricky.ttn 2004-05-12Values aside from EXIT_SUCCESS and EXIT_FAILURE can be used to indicatefiner gradations of failure. If this is the only information availableto the caller, clamping such values to EXIT_FAILURE loses information.If there are other ways to indicate the problem to the caller (such asa message to stderr) it may be ok to clamp. In all cases, it is therelationship between the program and its caller that must be examined.[Insert ZAMM quote here.]