Vorrei provocare una situazione in cui non è disponibile alcun descrittore di file.Come posso simulare una mancanza di descrittore di file?
ho pensato a 2 possibilità:
- Apertura di migliaia di file in maniera casuale fino a quando il risultato di OPEN è -1
- Impostare un numero molto basso di descrittore di file disponibili (diciamo stdin, stdout e stderr).
Come lo fareste?
Oppure utilizzare [ 'setrlimit'] (http://linux.die.net/man/2/setrlimit) da C. – o11c
Ha il guscio creare descrittori di file quando la deposizione delle uova un programma esterno? Penso che un oleodotto avrebbe almeno bisogno di usare 'pipe (2)' e vari tipi di sostituzione potrebbero anche causare problemi. Per lo meno, dovresti essere consapevole che questo ulimit ostacolerà notevolmente il tuo guscio. – Kevin
@Kevin, il reindirizzamento può essere fatto tramite 'dup (2)', 'dup2 (2)', o 'pipe (2)', ma quando la shell genera semplicemente un programma e si limita a forche e usa 'execve (2)' che passa sopra i primi 3 descrittori senza crearne di nuovi nel sottoprocesso. Per il reindirizzamento effettivo, indipendentemente da ciò che si usa, viene creato un descrittore, dal momento che il descrittore è duplicato prima di poter essere riassegnato/collegato, poiché stdin è già associato al descrittore di stdin della shell. Il limite può essere aumentato nuovamente dopo il test fino al limite superiore predefinito (vedere il valore predefinito con 'ulimit -n'). – Matthew