Was sind die möglichen Werte für die Datei-Deskriptoren?
Ich bin daran interessiert zu wissen, die gültigen Werte, die ich erwarten kann, für einen Datei-Deskriptor.
Bitte lassen Sie mich erklären ein wenig. Ich weiß, dass, zum Beispiel, wenn ich #include <unistd.h>
auf meinem linux-system dann einen Aufruf zum öffnen einer Datei zum Lesen:
int fileDescriptor;
fileDescriptor = open("/some/filename",O_RDONLY);
könnte ein Fehler auftreten und ich erhalten -1 als Ergebnis.
Übrigens die (-1) negativ muss etwas haben, von besonderer Bedeutung. Es ist, dass alle anderen Werte sind gültige Datei-Deskriptoren? d.h. auch die negativen wie -2 und -1023?
Unter der Annahme, der int ist 4 bytes (sizeof(int)==4
), dann würde
(-1) = 10000000 0000000 00000000 00000001
wäre die einzige nachweisbare Ungültiger Datei-Deskriptor?
Würden andere wie:
(0) = 00000000 0000000 00000000 00000000
(-2) = 10000000 0000000 00000000 00000010
(2) = 00000000 0000000 00000000 00000010
ok sein?
Da der file-Deskriptor Speicherung von 4 bytes, ich hätte daher maximal
(2^(8*4)-1) gültige Datei-Deskriptoren, und somit wäre dies die maximale Anzahl von Dateien, die ich öffnen kann, richtig?
Setzen es schlicht wieder:
Was sollte ich erwarten, dass eine (gültige) Datei-Deskriptor werden?
beliebigen Wert, aber -1?
file descriptor, a small, **nonnegative integer** for use in subsequent system calls
siehe man 2 open- Siehe diese Frage für die maximale Anzahl von Dateien/Datei-Deskriptoren, die geöffnet werden können.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus der Mann Seite:
dann:
Wenn
open
scheitern, gibt es-1
oder0xffffffff
. Es hat keine Bedeutung, aberopen
fehlgeschlagen:Störungsursache gespeichert in
errno
, Lesen Sie Ihren Wert und prüfen, ob es eine der möglichen Ausfälle GründeEACCES
,EEXIST
,EINTR
.. etc, oder verwenden Sie einfachperror
zu drucken die Fehlermeldung.Hier ist, was ein Linux - Handbuch Seite sagt:
Andere Systeme zurückkehren können, andere negative Werte im Falle eines Fehlers.
Bereich der möglichen Werte von Datei-Deskriptoren von 0 bis 1023 für Linux-system (32-bit oder 64-bit-system).
Können Sie nicht erstellen Sie einen Datei-Deskriptor Wert von mehr als 1023. Im Falle der Datei-Deskriptor von dem Wert 1024, wird es wieder ein Fehler EBADF (bad file descriptor, keine Fehler-9).
Wenn ein negativer Wert von Datei-Deskriptor zurückgegeben wird, es zeigt an, dass ein Fehler aufgetreten ist.