1048577 ли предел открытых файлов в Ubuntu? Если я попробую следующий код, он работает.
Однако, если я изменю значение на 1048578, функция setrlimit вернет код 1 и значение errno также будет установлено на 1.
int l;
struct rlimit rl;
rl.rlim_cur = 1048577;
rl.rlim_max = 1048577;
l = setrlimit(RLIMIT_NOFILE, &rl);
if(l != 0){
errx(1, "setrlimit returned result %d", errno);
}
Я запускаю его как root и собираю с GCC 4.6.3
Вы достигли максимума ядра (NR_OPEN), см.
cat /proc/sys/fs/nr_open
.