читайте (2) и запись (2) работы оба на дескрипторе сокета, а также на дескрипторе файла. В случае дескриптора файла, Пользовательской таблицы дескрипторов файлов-> таблица файлов и наконец к inode таблице, где это проверяет на тип файла (регулярный файл/символ/блок) и читает соответственно. В случае символа spl файл, это получает указатели функции на основе главного количества файла от символьного переключателя устройства и называет соответствующие стандартные программы чтения-записи зарегистрированными для устройства. Столь же соответствующую стандартную программу чтения-записи называют для блока специальным файлом путем получения указателей функции от переключателя блочного устройства.
Могли Вы сообщать мне, какой exatly происходит, когда чтение-запись обратилось к дескриптору сокета. Если чтение-запись работает над дескриптором сокета, мы наклоняемся, мы используем открытый вместо сокета для получения дескриптора?
Дескрипторы сокетов также связаны с файловыми структурами, но набор функций file_operations для этих структур отличается от обычного. Поэтому инициализация и использование этих дескрипторов различаются. Чтение и запись части интерфейса уровня ядра оказались в точности эквивалентными.
чтение и запись допустимы для некоторых типов сокетов в некоторых состояниях; все это зависит от различных структур, которые передаются внутри ядра.
В принципе open () может создать дескриптор сокета, но API сокетов BSD никогда не определялся таким образом.
Существуют и другие (в некоторой степени специфичные для Linux) типы файловых дескрипторов, которые открываются системными вызовами, отличными от open (), например epoll_create или timerfd_create. Они работают одинаково.