С небольшой тестовой программой (скомпилированной с помощью mingw в Linux) я заметил, что нельзя использовать вызовы read
и write
для сокета fd, полученные с помощью реализации Winsock2 вызова socket
.Вызов write возвращает <0 и устанавливает errno = EBADF. </p>
Подумайте о программах, запущенных из xinetd, минус их предположение, что их стандартный ввод / вывод всегда является сокетом.(Некоторые программы, например, вызывают getpeername, что приведет к сбою, если это не сокет, впоследствии они могут преждевременно завершиться.)
Так как же {тип файлового дескриптора} -агностические программы, которые просто читают / пишут из /к stdin / stdout, предположительно работающему в среде win32, если не делать предположений о fd?
Или, проще говоря, есть ли вызов магической функции для соединения fds сокета Winsock2 с win32 (хорошо, mingw) write
реализация?