Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How could I simulate a lack of file descriptor?

Tags:

I would like to provoke a situation where there is no file descriptor remaining.

I have been thinking about 2 possibilities:

  1. Opening thousands of files randomly until the result of open is -1
  2. Set a very low number of file descriptor available (let's say stdin, stdout and stderr).

How would you do it?

like image 482
anothertest Avatar asked Jun 15 '15 23:06

anothertest


1 Answers

You can limit the number of file descriptors a process can open under Linux using ulimit.

Executing ulimit -n 3 before running your C program should make it an error to open any more files, since stdin, stdout, and stderr take up the first 3 descriptors.

An example:

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

The shell process itself attempts to open /dev/null to redirect stdout before closing it there, therefore it gets an error. Your C program will be fed the exact same error the first time it calls fopen, open, socket, etc (or anything that allocates a new file descriptor).

like image 164
Matthew Avatar answered Sep 22 '22 00:09

Matthew