Quelles sont les valeurs possibles pour les descripteurs de fichier?

Je suis intéressé à connaître les valeurs valides qui je peux attendre pour un descripteur de fichier.

S'il vous plaît laissez-moi vous expliquer un peu. Je sais que, par exemple, lorsque j'utilise #include <unistd.h> sur mon système linux alors un appel à l'ouverture d'un fichier pour la lecture:

int fileDescriptor;
fileDescriptor = open("/some/filename",O_RDONLY);

une erreur peut se produire et je reçois -1.
Incidemment le (-1) négatif doit avoir un peu de sens. Est-ce que toutes les autres valeurs sont valables les descripteurs de fichier? c'est à dire aussi négatives comme -2 et -1023?

En supposant que l'int est de 4 octets (sizeof(int)==4), puis aurait

(-1) = 10000000 0000000 00000000 00000001

serait le seulement détectable descripteur de fichier invalide?
D'autres personnes comme:

  • (0) = 00000000 0000000 00000000 00000000
  • (-2) = 10000000 0000000 00000000 00000010
  • (2) = 00000000 0000000 00000000 00000010

être ok?
Depuis le descripteur de fichier peut stocker 4 octets j'ai pu avoir par conséquent un maximum de
(2^(8*4)-1) valide les descripteurs de fichier et, par conséquent, ce serait le nombre maximal de fichiers que je peux avoir ouvert, correct?

Mettre plaine:

Que dois-je attendre (valide) descripteur de fichier?

toute valeur, mais -1?

file descriptor, a small, **nonnegative integer** for use in subsequent system calls voir man 2 open
Voir cette question pour le nombre maximal de fichiers/les descripteurs de fichier qui peut être ouvert.

OriginalL'auteur humanityANDpeace | 2013-08-29