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 openVoir cette question pour le nombre maximal de fichiers/les descripteurs de fichier qui peut être ouvert.
OriginalL'auteur humanityANDpeace | 2013-08-29
Vous devez vous connecter pour publier un commentaire.
De la page de man:
et puis:
OriginalL'auteur Oliver Charlesworth
Quand
ouvrir
échoue, il renvoie-1
, ou0xffffffff
. Il n'a pas de sens maisopen
a échoué:La raison de l'échec est stocké dans
errno
, vous pouvez lire sa valeur et de vérifier si c'est une des raisons des échecsEACCES
,EEXIST
,EINTR
.. etc, ou tout simplement utiliserperror
pour imprimer le message d'erreur.OriginalL'auteur
Voici ce qu'un Linux page de manuel dit:
D'autres systèmes peuvent renvoyer à d'autres valeurs négatives en cas d'erreur.
OriginalL'auteur meaning-matters
Plage de valeurs possibles de descripteurs de fichier est de 0 à 1023 pour un système Linux (32 bits ou 64 bits du système).
Vous ne pouvez pas créer un descripteur de fichier avec une valeur de plus de 1023. En cas de descripteur de fichier de la valeur 1024, il retournera une erreur de EBADF (mauvais descripteur de fichier, erreur n-9).
Lorsque la valeur négative de descripteur de fichier est retourné, il indique qu'une erreur s'est produite.
OriginalL'auteur premal