И как можно узнать, происходит ли какое-либо из них, и приводит к ошибке, возвращаемой fork() или system()? Другими словами, если fork() или system() возвращаются с ошибкой, что в Linux есть некоторые вещи, которые я могу проверить, чтобы диагностировать причину этой конкретной ошибки?Какие условия могут вызвать вызовы fork() или system() для отказа в Linux?
Например:
- Попросту из памяти (результаты в Errno ENOMEM) - проверить использование памяти с «свободной» и т.д.
- не достаточно памяти для ядра для копирования таблиц страниц и другой бухгалтерской информации родительского процесса (результаты в errno EAGAIN)
- Существует ли глобальный предел процесса? (результаты в errno EAGAIN тоже?)
- Есть ли лимит процесса для каждого пользователя? Как я могу узнать, что это такое?
- ...?
Чтобы уточнить, когда один знает, что ошибка, такие как EAGAIN произошло во время вилке() (ERRNO == EAGAIN), как вы узнали, что именно вызвало это (было это RLIMIT_NPROC? Была ли это ошибка копирования таблиц страниц или структуры задач, и если да, то почему?И как вы его избегаете?) –
Я также задал другой, но связанный с этим вопрос о таблицах страниц в Linux: http://stackoverflow.com/questions/853736/how-to-find-or-calculate-a-linux- processs-page-table-size-and-other-kernel-accou –