В Linux, C ++ мы можем вернуть коды выхода? Т.е. этот код действителен:
int main()
{
return -1;
}
Я спрашиваю, если этот код скомпилирован и выполнен из bash / zsh, возвращаемое значение будет 255, я думаю, это из-за того, что он использует 8-битный код возврата, и это подразумевает, что кодам возврата разрешено только быть между положительным.
Это правильно?
Соответствующий системный вызов _exit()
, а также Сам POSIX указывает что только нижние 8 бит статуса присвоены _exit()
обычно используются:
_exit(status)
Значение статуса может быть0
,EXIT_SUCCESS
,EXIT_FAILURE
или любое другое значение, хотя только младшие 8 бит (то естьstatus & 0377
) должен быть доступен сwait()
а такжеwaitpid()
;
Хотя далее говорится, что «полная стоимость должна быть доступна от waitid()
«, но в Linux я, кажется, все еще получаю только младшие восемь бит.
НЕТ, код выхода передан exit(2)
объединяется с данными для случаев, когда ваша программа прерывается с помощью посылаемого ей сигнала. exit(2)
код возврата только наименее значимый байт кода, возвращаемого wait(2)
, Смотрите страницы для wait(2)
а также exit(2)
для объяснения того, как формируется код возврата.