Je voudrais provoquer une situation où il ne rest aucun descripteur de fichier.
J’ai réfléchi à 2 possibilités:
Comment le feriez-vous?
Vous pouvez limiter le nombre de descripteurs de fichiers qu’un processus peut ouvrir sous Linux en utilisant ulimit.
L’exécution d’ ulimit -n 3
avant d’exécuter votre programme C devrait ulimit -n 3
une erreur d’ouverture de tous les fichiers, puisque stdin, stdout et stderr utilisent les 3 premiers descripteurs.
Un exemple:
$ ulimit -n 3 $ echo > /dev/null zsh: too many open files: /dev/null
Le processus shell lui-même tente d’ouvrir / dev / null pour redirect stdout avant de le fermer, ce qui entraîne une erreur. Votre programme C recevra exactement la même erreur la première fois qu’il appelle fopen , open , socket , etc. (ou tout autre élément qui alloue un nouveau descripteur de fichier).