C Unix max文件描述符

C Unix max文件描述符,c,system-calls,file-descriptor,C,System Calls,File Descriptor,我最近写了一个程序来计算每个进程打开的文件描述符的最大数量 基本上是 int fd = creat("somefile.dat"); int count = 1; while(1) { int s = dup(fd); if (s == -1) break; count++; } printf("Max fd: %d", s); 现在,我将如何应用相同的程序,但如何找到系统范围内的最大fd量而不是每个进程?我有多种解决方案: 一, -将MINIX中允许的最大进程数乘

我最近写了一个程序来计算每个进程打开的文件描述符的最大数量

基本上是

int fd = creat("somefile.dat");
int count = 1;

while(1)
{

 int s = dup(fd);

  if (s == -1)
    break;

  count++;
}

printf("Max fd: %d", s);

现在,我将如何应用相同的程序,但如何找到系统范围内的最大fd量而不是每个进程?

我有多种解决方案:

一, -将MINIX中允许的最大进程数乘以每个进程的最大FDs

  • 我唯一担心的是,在每个进程的#进程*FD之下或之上存在某种硬上限
2-创建一个多次运行上述程序的程序

  • 规定是您必须以某种方式将count返回到原始程序并求和
    • 此外,我不知道如何从程序中调用其他进程并从中检索返回值
    • 此外,如何同时运行所有进程?您如何知道进程的最大数量,以及如何知道何时停止运行进程

另外,你一定是在我的ecs150课程中,不是吗?

什么会让你相信这种技术可以用于查看超出每个进程限制的任何内容?你必须创建多个同时运行的进程。这只允许你为运行该代码的用户找到每个进程的最大进程数。使用这种技术来推动系统范围的限制可能是有害的——你会阻止合法进程在“东西”运行时打开文件。不要。使用任何特定于操作系统的工具来找到它。我实际上是在Minix上运行这段代码,所以它应该不会太有害。我不知道如何更改我的程序以查找系统范围的限制?这到底是什么意思?为什么不使用getrlimit()?