Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 分配大量文件描述符_C_Linux_File Descriptor - Fatal编程技术网

C 分配大量文件描述符

C 分配大量文件描述符,c,linux,file-descriptor,C,Linux,File Descriptor,我感兴趣的是通过分配大量文件描述符并导致文件描述符失效来关闭系统(比如15分钟)。(别担心,我不是想侵入任何东西。这是为了测试我正在编写的服务……看看它在其他程序下的行为如何。)有什么最佳实践吗?我应该在无限for循环中继续说fopen()吗?15分钟后,我就可以结束这个过程了?有人有这方面的经验吗 更新:我正在运行Linux,我正在编写的程序将具有超级用户权限 谢谢, ~yogi取决于操作系统的实现,但对同一进程中的同一文件调用fopen不会分配新的文件描述,只会增加引用计数器 我建议你读一些

我感兴趣的是通过分配大量文件描述符并导致文件描述符失效来关闭系统(比如15分钟)。(别担心,我不是想侵入任何东西。这是为了测试我正在编写的服务……看看它在其他程序下的行为如何。)有什么最佳实践吗?我应该在无限for循环中继续说fopen()吗?15分钟后,我就可以结束这个过程了?有人有这方面的经验吗

更新:我正在运行Linux,我正在编写的程序将具有超级用户权限

谢谢,
~yogi

取决于操作系统的实现,但对同一进程中的同一文件调用fopen不会分配新的文件描述,只会增加引用计数器

我建议你读一些关于

以下是一些可用的软件(您不需要标记任何操作系统平台):


正常使用时,我曾经遇到过这种情况。我相信你在linux中运行了很多inode。我不知道有什么比打开文件更快的方法。小心点,我们把系统锁上了。那是很久以前的事了,所以我不记得是什么在试图打开一个文件,但通常情况下,人们都认为他们可以获得一个文件句柄,如果不能,他们的行为也不会像应该的那样好~本

我的2美分:

1.编写一个创建大量文件描述符的程序。您可以通过以下方法之一实现此目标:

(a) 在代码中打开大量不同的文件
(b) 打开大量套接字描述符

(c) 创建大量线程

2.现在,使用shell脚本或类似的东西继续生成步骤1中创建的程序的多个实例(即创建多个进程)

注意:
在linux以及大多数其他操作系统中,每个进程的文件描述符数量是有限制的(在linux中,默认情况下是1024个,我想,您可以使用ulimit-a进行检查)。因此,当您这样做时,您的过程将失败。我真的不太确定,仅仅通过增加文件描述符的使用数量,就可以使系统性能下降 RimiTynOFILE < /C>文件描述符限制吗?

只需在测试应用程序的同一个shell中使用bash
-n
内置即可完成此操作,例如:

 ulimit -n 32
而且它不会对已经运行的许多其他服务造成太大的干扰。降低该限制将使您的应用程序(在同一个shell中运行)很快受到损害(出于测试目的)

在整个系统级别上,您还可以写入
/proc/sys/fs/file max
,例如

echo 1024 > /proc/sys/fs/file-max

您可以使用获取临时文件的文件描述符。

您没有指定要使用的操作系统,但打开大量文件描述符可能只会导致打开这些描述符的进程出现“打开的文件太多”错误,而不是“使系统停机”。每个进程的打开文件描述符的数量不是基于吗?我在想,如果其他进程尝试写入或读取任何内容,系统将变得可用。