我怎么能模拟缺少文件描述符?

时间:2015-06-15 23:29:04

标签: c linux file-descriptor

我想引发一个没有文件描述符的情况。

我一直在考虑两种可能性:

  1. 随机打开数千个文件,直到打开结果为-1
  2. 设置一个非常少的文件描述符(让我们说stdin,stdout和stderr)。
  3. 你会怎么做?

1 个答案:

答案 0 :(得分:31)

您可以使用ulimit限制进程在Linux下打开的文件描述符的数量。

在运行C程序之前执行ulimit -n 3会导致打开更多文件时出错,因为stdin,stdout和stderr会占用前3个描述符。

一个例子:

$ ulimit -n 3
$ echo > /dev/null
zsh: too many open files: /dev/null

shell进程本身会尝试打开/ dev / null来重定向stdout,然后将其关闭,因此会出错。第一次调用 fopen 打开套接字等(或任何分配新内容的任何内容)时,您的C程序将收到完全相同的错误文件描述符)。