Статус выхода из программы и $?

В книге C ++ Primer, которую я читал, говорится, что

Доступ к значению, возвращаемому из main, зависит от системы. Как в системах UNIX, так и в Windows, при удалении программы вы должны выполнить соответствующую команду echo. В UNIX мы получаем статус echo $?

Итак, если программа

int main ()
{
    return -88;
}

Почему echo $? не возвращает? (168 напечатано на echo)


person James Raitsev    schedule 17.08.2012    source источник
comment
что именно echo $? возвращается для вас?   -  person MartyE    schedule 17.08.2012


Ответы (2)


Вроде как. Однако он преобразует значение в беззнаковое 8-битное значение, которое составляет 256 88 = 168. Это часть системно-зависимой манеры.

person Kerrek SB    schedule 17.08.2012
comment
@BjoernD: d'oh :-) (Я набрал 265 в calc. Но мой минус выглядит красивее, чем ваш.) - person Kerrek SB; 17.08.2012

Возврат значения из main аналогичен вызову std::exit с этим значением. Вот что говорится в позднем проекте стандарта о std::exit (18.5, status - это значение, которым вы его называете):

Наконец, управление возвращается в среду хоста. Если status равно нулю или EXIT_SUCCESS, возвращается форма статуса успешное завершение, определяемая реализацией. Если status равно EXIT_FAILURE, возвращается форма статуса неудачное завершение, определяемая реализацией. В противном случае возвращаемый статус определяется реализацией.

Обычно значение либо интерпретируется как есть, либо преобразуется в меньший (возможно, беззнаковый) тип, но это действительно зависит от вашей среды и реализации.

person eq-    schedule 17.08.2012