Je to specifické pro implementaci. Můžete udělat toto:
int main()
{
assert(0);
}
Poté jej spusťte:
./a.out
echo $?
1 (<- nebo cokoliv jiného)
To vám alespoň napoví, co můžete od svého nastavení očekávat. Dostávám 134 na několika linuxových boxech s GCC i g++.
Standard C99 (nezměněn v C11) uvádí, že assert
volá abort
a abort
stuff uvádí toto o návratovém kódu:
Implementací definovaná forma stavu neúspěšné ukončení je vrácena do hostitelského prostředí pomocí volání funkce
raise(SIGABRT)
.
Je to zdokumentováno v sekci 7.2.1.1 (uplatnění) a 7.20.4.1 (zrušení) standardu C99 zde.
Mnoho systémů UNIX vrátí 128 plus číslo signálu (SIGABRT
je signál číslo 6), takže můžete získat 134. Cokoli dostanete, mělo by to být zdokumentováno implementací C.
Zde najdete například gcc
. I když o tom, co se vrátí do volajícího prostředí, docela mlčí. Z konkrétních sekcí zde:
Některé volby jsou prováděny knihovnou a operačním systémem (nebo jiným prostředím při kompilaci pro volně stojící prostředí); podrobnosti naleznete v jejich dokumentaci.
A tady:
Chování většiny těchto bodů závisí na implementaci knihovny C a není definováno samotným GCC.
Stejně tak glibc
doco zde při ukončení programu (konkrétně bit statusu ukončení). Zmiňuje konvence, ale žádná pevná pravidla.