write c linux file-descriptor

write - file descriptor linux



¿Cómo podría simular una falta de descriptor de archivos? (1)

Puede limitar el número de descriptores de archivos que un proceso puede abrir bajo Linux usando ulimit.

Ejecutar ulimit -n 3 antes de ejecutar su programa C debería hacer que sea un error abrir más archivos, ya que stdin, stdout y stderr ocupan los primeros 3 descriptores.

Un ejemplo:

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

El propio proceso de shell intenta abrir / dev / null para redirigir la salida estándar antes de cerrarla allí, por lo que recibe un error. Su programa de C recibirá exactamente el mismo error la primera vez que llame a fopen , open , socket , etc (o cualquier cosa que asigne un nuevo descriptor de archivo).

Me gustaría provocar una situación en la que no queda ningún descriptor de archivo.

He estado pensando en 2 posibilidades:

  1. Abrir miles de archivos al azar hasta que el resultado de abrir sea -1
  2. Establezca un número muy bajo de descriptor de archivos disponible (digamos stdin, stdout y stderr).

¿Como lo harias?