1

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

本质上是

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 量?

4

1 回答 1

2

我有多种解决方案的想法:

1 - 将 MINIX 中允许的最大进程数乘以每个进程的最大 FD

  • 我唯一担心的是,有某种硬上限低于或高于进程数 * 每个进程的 FD

2 - 创建一个多次运行上述程序的程序

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

PS你一定在我的ecs150班,不是吗?

于 2012-04-26T02:53:51.860 回答