【发布时间】:2012-04-25 05:22:54
【问题描述】:
我最近编写了一个程序来计算每个进程打开的文件描述符的最大数量。
本质上是
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 上运行这段代码,所以它应该不会太有害。我不知道如何更改我的程序以寻找系统范围的限制?这甚至意味着什么?
-
为什么不只使用 getrlimit() ?
标签: c system-calls file-descriptor