Linux, c ++, отрицательные коды выхода, уточнение?

В Linux, C ++ мы можем вернуть коды выхода? Т.е. этот код действителен:

int main()
{
return -1;
}

Я спрашиваю, если этот код скомпилирован и выполнен из bash / zsh, возвращаемое значение будет 255, я думаю, это из-за того, что он использует 8-битный код возврата, и это подразумевает, что кодам возврата разрешено только быть между положительным.

Это правильно?

1

Решение

Соответствующий системный вызов _exit(), а также Сам POSIX указывает что только нижние 8 бит статуса присвоены _exit() обычно используются:

_exit(status)
Значение статуса может быть 0, EXIT_SUCCESS, EXIT_FAILUREили любое другое значение, хотя только младшие 8 бит (то есть status & 0377) должен быть доступен с wait() а также waitpid();

Хотя далее говорится, что «полная стоимость должна быть доступна от waitid()«, но в Linux я, кажется, все еще получаю только младшие восемь бит.

2

Другие решения

НЕТ, код выхода передан exit(2) объединяется с данными для случаев, когда ваша программа прерывается с помощью посылаемого ей сигнала. exit(2) код возврата только наименее значимый байт кода, возвращаемого wait(2), Смотрите страницы для wait(2) а также exit(2) для объяснения того, как формируется код возврата.

0

По вопросам рекламы [email protected]