我想引发一个没有文件描述符的情况。
我一直在考虑两种可能性:
你会怎么做?
答案 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程序将收到完全相同的错误文件描述符)。