Ответ 1
В стандарте c99 указано, что assert
вызывает abort
, а материал abort
указывает это на код возврата:
Реализованная в форме форма неудачного завершения статуса возвращается в среду хоста с помощью вызова вызова функции (SIGABRT).
Он описан в разделе 7.2.1.1 (assert) и 7.20.4.1 (прервать) стандарта c99 здесь.
Многие системы UNIX вернут 128 плюс номер сигнала (SIGABRT - это номер сигнала 6), поэтому вы можете получить 134. Что бы вы ни получили, это должно быть документировано реализацией C.
Например, см. здесь для gcc. Хотя он довольно молчал о том, что возвращается в вызывающую среду. Из конкретных разделов здесь:
Некоторые варианты выполняются библиотекой и операционной системой (или другой средой при компиляции для автономной среды); Подробнее см. в их документации.
И здесь:
Поведение большинства этих точек зависит от реализации библиотеки C и не определяется самим GCC.
Так выглядит glibc doco здесь о завершении программы (в частности, бит состояния выхода). В нем упоминаются соглашения, но нет твердых правил.