"Это при условии оптимальной эффективности". Это **не** а разумное предположение. Человеческое тело не даже близко к 100% эффективнее в преобразовании пищи энергию в мышечную работу. На самом деле, это гораздо ближе к 0% чем 100%! Строки, которые вы используете для монтирования акций было бы неплохо... Они также использовали сумом и Котоко из чобиты :) Единственное, что я могу думать, это дополнительный блок атрибутами. Он при помощи SELinux? Они, вероятно, имеют одинаковые метки (регистрация с команды `ls -ЛЗ`), так что любой файл (работает на PHP) будет делать. Давайте просто скажем, что использование латекса широко распространено : в очередной раз), это не вопрос того, данные показывают, что *бар* превосходит *quz*; я мог бы научить семестр курс всего об этом. Проблема здесь в том, чтобы сказать что-то значимое и памятное о превосходстве *бар* всего за две минуты, так, что не-специалисты могут понять. Все водопроницаемые аргументы в мире бесполезны, если я не могу общаться с ними эффективно. Из моего опыта (могу ошибаться, я не говорю по-китайски ... я был бы счастлив получить подтверждение) есть простое правило, чтобы рассказать китайским имена от фамилий ", если он имеет два слога, это фамилия". Есть также один слог в фамилии, но это простое правило получает в большинстве случаев правильно.

Количество переданного для _exit()/exit_group() системный вызов (иногда упоминается как код выхода , чтобы избежать двусмысленности с статус выхода , который также со ссылкой на кодировку либо код выхода или сигнала, количество и дополнительную информацию в зависимости от того, процесс был убит или вышел нормально) имеет тип инт, так что на UNIX-подобных системах, как Linux, как правило, 32-разрядный целочисленный со значениями в диапазоне от -2147483648 до (-231) до 2147483647 (231-1).

Однако, на всех системах, когда родительский процесс (или ребенок сборщик или инициализации если родитель умер) использует ожидания(), с помощью waitpid(), wait3(), wait4() системный вызов, чтобы получить его, только нижние 8 бит из него доступны (значения от 0 до 255 (28-1)).

При использовании waitid() API (или сигнал обработчик сигнала sigchld), в большинстве систем (и как POSIX теперь более четко требует в 2016 издание стандарта (см. Для _exit() спецификация)), полный номер (в si_status поля возвращаемой структуры). Что не так в Linux, но которые также усекает число до 8 бит с waitid() API, хотя это может измениться в будущем.

Как правило, вы хотите использовать только значения 0 (в общем смысле успеха) до 125 только, как многие снаряды использовать значения выше 128 в $? представительство статус выхода для кодирования сигнала номером процесса были убиты и 126 и 127 на специальных условиях.

Вы можете использовать 126 до 255 на выходе() означает то же самое, что они делают для оболочки $? (например, когда скрипт делает рэт=$?; ...; выход "$рет"). Используя значения вне 0 -> 255-это вообще не полезно. Ты вообще только и делают, что, если вы знаете, родитель будет использовать waitid() API на системах, которые не усекают и у вас есть потребность в 32-битном диапазоне значений. Обратите внимание, что если вы делаете выход(2048) например, что будет расценено как успех родителей с использованием традиционных ждать*() API-интерфейсы.

Более подробная информация:

Что вопросы и ответы должны надеюсь ответить на большинство ваших вопросов и разъяснить, что означают статус выхода. Я добавлю еще несколько вещей:

Процесс не может завершиться, если он убил или вызывает для _exit()/exit_group() системные вызовы. При возврате из функции main() в языке C, то libc вызовов системы вызова с возвращенным значением.

Большинство языков имеют выход() функция, которая оборачивает, что системный вызов и стоимость они берут, если таковые вообще прошел как системному вызову. (обратите внимание, что те, как правило, делать больше вещей, как очистка сделано с Выход() функция, которая сбрасывает с stdio буферов, работает в atexit() крючки...)

Это дело, по крайней мере:

$ трассированием -е exit_group на awk 'начало{выход(1234)}'
exit_group(1234) = ?
$ трассированием -е exit_group mawk 'начало{выход(1234)}'
exit_group(1234) = ?
$ трассированием -е exit_group busybox и на awk 'начало{выход(1234)}'
exit_group(1234) = ?
$ Эхо | трассированием -е exit_group СЭД 'Q1234'
exit_group(1234) = ?
$ трассированием -е выхода exit_group на Perl -е '(1234)'
exit_group(1234) = ?
$ трассированием -е exit_group питон -с выходом '(1234)'
exit_group(1234) = ?
$ трассированием -е exit_group ждем-с выхода '1234'
exit_group(1234) = ?
$ трассированием -е exit_group РНР -Р 'выход(1234);'
exit_group(1234) = ?
$ трассированием -е выхода exit_group ЗШ -с '1234'
exit_group(1234)

Вы изредка увидите некоторые жалуются, что, когда вы используете значение за пределами 0-255:

m4exit $ Эхо '(1234)' | трассированием -е exit_group М4
М4:как stdin:1: состояние выхода из диапазона: `1234'
exit_group(1) = ?

Некоторые снаряды жаловаться, когда вы используйте отрицательное значение:

$ трассированием -е exit_group черточки -с 'Выход -1234'
тире: 1: выход: незаконное номер: -1234
exit_group(2) = ?
$ трассированием -е exit_group Яш -с 'Выход -- -1234'
выход: `-1234' не является допустимым целым числом
exit_group(2) = ?

POSIX оставляет поведение неопределено, если значение, передаваемое выход специальные встроенные вне 0->255.

Некоторые снаряды показывают какие-то неожиданные поведения если у вас:

  • БашМКШ , но не беспроводным интерфейсам, на которых она основана) принимает на себя усечь значение в 8 бит:

    $ трассированием -е exit_group Баш-с выходом '1234'
    exit_group(210) = ?
    

    Так что в эти снаряды, если вы хотите, чтобы выйти со значением за пределами 0-255, вы должны сделать что-то вроде:

    старпома ЗШ -с 'Выход -- -12345'
    старпома на Perl -е 'выход(-12345)'
    

    Это выполняется другая команда в тот же процесс, Что может вызвать системный вызов с значение, которое вы хотите.

  • как уже упоминалось в, что другие вопросы, ksh93 странное поведение для выхода значений от 257 до 256+max_signal_number, где вместо вызова exit_group(), он убивает себя с соответствующим сигнала1.

    $ КШ-C 'на выход "$((256 + $(убить -я остановка)))"'
    ЗШ: подвесные (сигнал) КШ-с выходом '"$((256 + $(убить -я остановка)))"'
    

    а в противном случае усекает число, как Баш/МКШ.


1 Это, вероятно, изменится в следующей версии. Теперь, что развитие ksh93 был захвачен в качестве сообщества усилия вне АТ&Т, что поведение, хоть как-то поощрять в POSIX, в настоящее время отменены