Причины для ENOMEM от::popen()
У меня есть приложение, которое в основном работает, но у меня есть одно условие, при котором вызов to:popen() получает ошибку с errno, установленным в ENOMEM. Страница man для::popen() ссылается на страницу для::fork(), которая сама перечисляет ENOMEM с этим кратким комментарием по Linux:
The fork() function may fail if:
ENOMEM Insufficient storage space is available.
Мне интересно, действительно ли мне не хватает памяти, или, возможно, какой-то другой ресурс, например файловые дескрипторы? Может ли fork () дать ENOMEM что-то кроме исчерпания фактической памяти в вашей системе? Это Centos4.
1 ответ
Решение
Я подтвердил, что ENOMEM возник из-за того, что не вызывал::pclose() после повторного::popen() и в конечном итоге исчерпал файловые дескрипторы.