シェルから使う外部コマンドは正常終了するとき exit(EXIT_SUCCESS) するわけで
/usr/include/stdlib.h:#define EXIT_SUCCESS 0 /* Successful exit status. */
になっているのだからしょうがないでしょうよ。