выход из блокировки выбора вызова! - PullRequest
0 голосов
/ 14 апреля 2010

Я вызываю сторонний API, который создает сокет, устанавливает соединение, а затем вызывает select API, передавая сокет для блокировки навсегда.

У меня нет доступа к сокету. Есть ли способ, которым я могу заставить вызов select исходить из моего приложения, не имея доступа к сокету?

Моя платформа - Windows.

1 Ответ

1 голос
/ 14 апреля 2010

Обычно вы не можете сделать это, если не можете получить доступ ни к сокету, ни к выбранному набору выбора.

Если вы можете получить доступ к сокету, закройте его через closesocket(). Если вы можете получить доступ к набору для чтения, вставьте в него фиктивный сокет, а затем посмотрите предыдущий пункт.

Если ничего из этого не работает, вы можете:

  • Убедитесь, что это происходит в отдельном потоке, который вы можете позже уничтожить (хотя это приведет к довольно очевидным утечкам ресурсов)
  • Попытка переопределить выбор, используя что-то вроде Обходы (не рекомендуется)
  • Примите поражение.
...