Современный идиоматический способ использования C poll()/epoll()/select()

#c #c 17

Вопрос:

для сетей у нас есть asio то, что обеспечивает асинхронную связь высокого уровня, независимую от платформы, через сокеты. Есть ли эквивалент для старого доброго poll() epoll() , или select() ?

В принципе, я хотел бы иметь возможность ждать событий на an ifstream , если это возможно.

Спасибо

Комментарии:

1. Независимо от того, проводите вы опрос или нет, это не имеет никакого отношения к C . Это может быть правильной стратегией, если библиотеки не поддерживают обратные вызовы и/или уведомления. Что вы можете сделать способом c , так это выполнить опрос с помощью асинхронной задачи. Например, используйте std::async/std::future и std::condition_variable с временным ожиданием (интервал опроса), который также ожидает приостановки опроса или условия завершения опроса. (сегодня уже слишком поздно писать вам пример). Я думаю, что это также будет включать en.cppreference.com/w/cpp/io/basic_istream/peek

2. К сожалению, стандартного решения, о котором я знаю, не существует. Помните, что потоки ввода-вывода C невероятно глупы, потому что они должны работать одинаково для очень широкого набора возможных целей с очень разной аппаратной и системной поддержкой.