Chciałbym poznać prawidłowe wartości, jakich mogę się spodziewać dla deskryptora pliku.Jakie są możliwe wartości deskryptorów plików?
Proszę pozwolić mi trochę wyjaśnić. Wiem, że, na przykład, kiedy używać #include <unistd.h>
w moim systemie linux następnie wezwanie do otwarcia pliku do odczytu: może wystąpić
int fileDescriptor;
fileDescriptor = open("/some/filename",O_RDONLY);
błąd i otrzymuję -1 wyniku.
Nawiasem mówiąc, (-1) negatywny musi mieć nieco szczególne znaczenie. Czy wszystkie pozostałe wartości są poprawnymi deskryptorami plików? tj. również negatywne, takie jak -2 i -1023?
Zakładając, że int jest 4 bajty (sizeof(int)==4
), wtedy
(-1) = 10000000 0000000 00000000 00000001
byłaby jedyną wykrywalnego nieprawidłowy deskryptor pliku? byłoby inni lubią:
(0) = 00000000 0000000 00000000 00000000
(-2) = 10000000 0000000 00000000 00000010
(2) = 00000000 0000000 00000000 00000010
być ok? Ponieważ deskryptor pliku mógł przechowywać 4 bajty, mógłbym mieć maksymalnie (2^(8 * 4) -1) poprawne deskryptory plików, a co za tym idzie maksymalna liczba plików, które mogę otworzyć, prawda?
Mówiąc zwykły ponownie:
Co należy spodziewać się (ważne) deskryptor być?
dowolna wartość oprócz -1?
"deskryptor pliku, mała, ** nieujemna liczba całkowita ** do wykorzystania w kolejnych wywołaniach systemowych" patrz man 2 open –
Zobacz [to pytanie] (https://stackoverflow.com/questions/17931583/maximum-number- z-files-that-can-be-opened-by-c-fopen-in-linux) dla maksymalnej liczby plików/deskryptorów plików, które można otworzyć. – jotik