Ветвление: Отрицательное возвращаемое значение

Одним дистрибутивом, о котором я могу думать, который был сделан быть обучающей системой, является Linux С нуля. Его цель, хотя должен показать Вам, как создать (из исходного кода) всю систему GNU/Linux с нуля, вместо того, чтобы только учить Вас, как это работает. К тому времени, когда Вы закончили, Ваше понимание и оценка создания ОС будут выше, чем в данный момент. Вам, конечно, будет нужен хост (рабочая ОС) на ранних стадиях.

Другая система такие соответствия Ваше приобретение знаний жажды является Дугой Linux. Его производители утверждают, что очень старались постараться не настраивать его, оставляя Вас, чтобы сделать это самих. Это имеет обширную документацию от своего вики-сайта, который является большим количеством документации, чем обеспеченный любым другим дистрибутивом, который я видел. Обратите внимание что, что Wiki периодически упаковывается как документы Wiki дуги (или документы Wiki дуги), если Вы хотите просмотреть ее локально.

Обратите внимание, что можно достигнуть в значительной степени чего-либо с любым дистрибутивом, который Вы выбираете. Существуют учебные руководства и руководства повсеместно. Это, они так очень не отличаются друг от друга. Они выполняют подобные базовые технологии.

4
21.08.2011, 17:05
3 ответа

В API C системные вызовы возвращают отрицательное значение для указания на ошибку и код ошибки в errno дает больше информации о природе ошибки. Ваша страница справочника должна объяснить возможные ошибки в Вашей системе. Существует два кода стандартной погрешности:

  • EAGAIN указывает, что новый процесс не может быть создан из-за отсутствия имеющихся ресурсов, или недостаточно память некоторого вида или предел, который был достигнут, такие как максимальное количество процессов на пользователя или в целом.
  • ENOMEM указывает, что новый процесс не может быть создан из-за отсутствия памяти некоторого вида. В соответствии с Linux, ENOMEM указывает на отсутствие памяти ядра, в то время как об отсутствии памяти пространства пользователя сообщают как EAGAIN. Под OpenBSD, ENOMEM используется для отсутствия памяти пространства пользователя также.

Таким образом, fork может перестать работать из-за отсутствия имеющихся ресурсов (возможно в форме искусственного предела, а не простого отсутствия памяти).

Поведение оболочек, когда fork сбои не указаны POSIX. На практике они склонны возвращать различные ошибочные состояния (1 в pdksh, 2 в пепле, 254 в ударе, 258 в ksh93, 1 в tcsh; zsh возвращается 0, который является ошибкой). При реализации оболочки для производственного использования (в противоположность осуществлению изучения), могло бы стоить обсудить это в списке рассылки Austin Group.

8
27.01.2020, 20:47

Я знаю, что ядро имеет параметр NPROC который говорит этому максимальный объем процессов, которые могут быть выполнены одновременно. Я воображаю, ли Вы уже в максимуме и пытаетесь создать другой, Вам откажут от ядра и возвратитесь-1 к Вашему родителю.

На другой ноте ядро также имеет предел процессов на пользователя, сохраненного в MAXUPRC параметр. То же соглашение применяется как выше.

3
27.01.2020, 20:47

Одна возможная причина была бы неспособностью породить новый процесс из-за ограничений квоты или некоторого системного отказа.

При записи программного обеспечения Вы не можете всегда знать, почему что-то могло бы перестать работать, но наличие ясно определенного способа обработать каждый шаг, если это не идет, право всегда является хорошей идеей.

1
27.01.2020, 20:47

Теги

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