Почему возврат отрицательный errno? (например, возвратите-EIO),

Необходимо смотреть на OSGi, например, реализованный в Eclipse Platform . Это делает точно это. Можно установить, удалить, запустить и остановить так называемые пакеты, которые являются эффективно файлами JAR. Но это делает немного больше, как это предлагает, например, сервисы, которые могут быть динамично обнаружены в файлах JAR во времени выполнения.

Или посмотрите спецификацию для Система Модуля Java .

25
задан exscape 4 December 2009 в 18:16
поделиться

3 ответа

Вот в основном причины. Многие функции дают много «хороших» положительных результатов, поэтому для кодов ошибок остаются отрицательные значения.

Коды ошибок C / POSIX немного «исторически выросли», поэтому нет смысла пытаться приписать слишком много рифм. или аргумент для них.

Многие другие современные языки создают исключения для ошибок, чтобы им не приходилось перехватывать часть своего возможного диапазона ответов для кодов ошибок. Конечно, в любом случае есть компромиссы.

14
ответ дан 28 November 2019 в 21:15
поделиться

Во-первых, это не совсем C-вещь. Вы смотрите на функцию, написанную для какой-то цели. Те же соглашения можно было использовать на любом языке.

В старые времена, когда я работал с Unix, существовало нечто вроде соглашения, согласно которому 0 означало успех, положительное число означало незначительные проблемы, а отрицательное число означало какой-то сбой. Следовательно, существовало также своего рода соглашение if (foo ()> = 0) {/ * успех сортировки * /} .

Это, несомненно, было связано с кодами возврата процесса Unix, где 0 было успешным.

18
ответ дан 28 November 2019 в 21:15
поделиться

В целом вы правильно поняли. Очевидная интерпретация верна.

Стандартное соглашение, однако, немного отличается от вашей формулы.

В Unix - программа, которая завершается с 0 проверками состояния как истина или успех для утилит уровня CLI, таких как оболочка. В библиотеке -1 обычно является возвратом ошибки.

Это приводит к общей парадигме, где > = 0 означает хорошо и < 0 означает ошибку . Ничто из этого не высечено на камне.

Кстати, это можно было бы классифицировать как дозорный образец , и вы могли бы назвать это дозорным возвратом. На самом деле это комбинация контрольного "значения" и кода ошибки, и это s легче набирать и легче сделать потокобезопасным, чем возвращать код ошибки в одном месте и контрольное значение для ошибки в другом.

Википедия сообщает, что контрольное значение используется для завершения цикла, но я бы подумал, что возврат функции будет гораздо более распространенным случаем. Никто не отвечает за эти определения.

7
ответ дан 28 November 2019 в 21:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: