Из любопытства написал:
#include <cstdio>
using namespace std;
int main() {
printf("start test fd\n");
size_t counter = 0u;
while(true)
{
if (char* file_name = tmpnam(NULL))
{
if (FILE* f = fopen(file_name, "wb"))
{
fwrite("hello", 5, 1, f);
++counter;
} else
{
break;
}
} else
{
break;
}
}
printf("can open %ld files simultaneously\n", counter);
return 0;
}
Запустил этот код напрямую из эклипса получил 4093 файловый дескриптора, запустил руками из консоли получил 1021, я так понимаю, что три стандартных файловых потока резервируются, но почему это не совпадает? Заранее благодарю, если кто подскажет, или где прочитать про такое.
Забыл указать, балуюсь на Ubuntu 13.04 64bit