deskryptor gniazda a deskryptor pliku
read (2) i write (2) działają zarówno na deskryptorze gniazda, jak i deskryptorze pliku. W przypadku deskryptora pliku tablicą deskryptorów plików użytkownika jest tablica plików & >, a na końcu tablica i-węzłów, w której sprawdza typ pliku (normalny plik/znak/blok) i odpowiednio odczytuje. W przypadku pliku char spl, uzyskuje wskaźniki funkcji na podstawie numeru głównego pliku z char przełącznika urządzenia i wywołuje odpowiednie procedury odczytu/zapisu zarejestrowane dla urządzenia.
Podobnie, odpowiednia procedura odczytu/zapisu jest wywoływana w bloku specjalnego pliku przez uzyskanie wskaźników funkcji z przełącznika urządzenia blokowego.
Czy mógłbyś dać mi znać, co dokładnie się dzieje, gdy odczyt/zapis jest wywoływany przez deskryptor gniazda. Jeśli odczyt/zapis działa na deskryptorze gniazda, czy nie możemy użyć open zamiast socket, aby uzyskać deskryptor?
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
3 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
Krótko mówiąc, jądro właśnie to zrobiło:
Mam nadzieję, że to jasne
podziękować,
Hocheng
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Zasadniczo open () może utworzyć deskryptor gniazda, ale funkcja API gniazda BSD nigdy nie została zdefiniowana w ten sposób.
Istnieją inne (nieco specyficzne dla Linuksa) typy deskryptorów plików, które są otwierane przez wywołania systemowe inne niż open (), takie jak epoll_create lub timerfd_create. Działają w ten sam sposób.