我如何模拟缺少文件描述符?
How could I simulate a lack of file descriptor?
我想挑起一个没有剩余文件描述符的情况。
我一直在想两种可能:
- 随机打开数千个文件,直到打开结果为-1
- 设置非常少的可用文件描述符(比如标准输入、标准输出和标准错误)。
你会怎么做?
您可以使用 ulimit 在 Linux 下限制一个进程可以打开的文件描述符的数量。
在 运行 之前执行 ulimit -n 3
你的 C 程序应该会导致打开更多文件时出错,因为标准输入、标准输出和标准错误占用前 3 个描述符。
一个例子:
$ ulimit -n 3
$ echo > /dev/null
zsh: too many open files: /dev/null
shell 进程本身尝试打开 /dev/null 以在关闭它之前重定向标准输出,因此它会出错。您的 C 程序在第一次调用 fopen、open、socket 时将出现完全相同的错误等(或任何分配新文件描述符的东西)。
我想挑起一个没有剩余文件描述符的情况。
我一直在想两种可能:
- 随机打开数千个文件,直到打开结果为-1
- 设置非常少的可用文件描述符(比如标准输入、标准输出和标准错误)。
你会怎么做?
您可以使用 ulimit 在 Linux 下限制一个进程可以打开的文件描述符的数量。
在 运行 之前执行 ulimit -n 3
你的 C 程序应该会导致打开更多文件时出错,因为标准输入、标准输出和标准错误占用前 3 个描述符。
一个例子:
$ ulimit -n 3
$ echo > /dev/null
zsh: too many open files: /dev/null
shell 进程本身尝试打开 /dev/null 以在关闭它之前重定向标准输出,因此它会出错。您的 C 程序在第一次调用 fopen、open、socket 时将出现完全相同的错误等(或任何分配新文件描述符的东西)。