我有兴趣通过分配大量文件描述符并导致文件外描述符失败来关闭系统(例如 15 分钟)。(别担心,我并没有试图破解任何东西。这是为了测试我正在编写的服务......看看它在其他程序行为不端的情况下如何表现。)有什么最佳实践吗?我应该在无限 for 循环中一直说 fopen() 吗?15分钟后,我可以杀死进程吗?有人有这方面的经验吗?
更新:我正在运行 Linux,我正在编写的程序将具有超级用户权限。
谢谢,~瑜伽士
我有兴趣通过分配大量文件描述符并导致文件外描述符失败来关闭系统(例如 15 分钟)。(别担心,我并没有试图破解任何东西。这是为了测试我正在编写的服务......看看它在其他程序行为不端的情况下如何表现。)有什么最佳实践吗?我应该在无限 for 循环中一直说 fopen() 吗?15分钟后,我可以杀死进程吗?有人有这方面的经验吗?
更新:我正在运行 Linux,我正在编写的程序将具有超级用户权限。
谢谢,~瑜伽士
我的 2 美分:
1.编写一个创建大量文件描述符的程序。您可以通过以下方法之一实现它:
(a)在代码中打开很多不同的文件
(b)打开很多套接字描述符
(c)创建很多线程
2.现在,继续使用shell 脚本或类似的东西生成在步骤1 中创建的程序的多个实例(即创建多个进程)。
注意: 在 linux 以及大多数其他操作系统中,每个进程的文件描述符数量是有限制的(在 linux 中,我猜默认是 1024。您可以使用 ulimit -a 检查它)。因此,当您执行此操作时,您的过程将失败。我真的不太确定仅仅通过增加文件描述符使用的数量就可以使系统崩溃。
我在正常使用中发生过一次。我相信你在 linux 中运行 inode。我不知道打开文件的更快方法。请小心,我们锁定了我们的系统。那是不久前,所以我不记得是什么试图打开文件,但事情通常假设他们可以获得文件句柄并且在他们不能的情况下表现得不如他们应该的那样。〜本
您可以使用mkstemp获取临时文件的文件描述符。