16 июня 2008 г.

Блокирующие вызовы и ошибка EINTR

Недавно столкнулся с ошибкой, связанной с неправильной обработкой возвращаемого значения функции sem_wait().

Функция sem_wait() уменьшает текущее значение семафора на 1. Если прежнее значение семафора было 0, то поток, выполняющий функцию sem_wait, блокируется до изменения значения семафора. При успешном выполнении — функция возвращает 0; при ошибке — вернет -1, а errno будет содержать код ошибки.

Вот пример неправильной обработки возвращаемого значения:

int res = sem_wait(&sem);
if (0 != res)
{
  // Ошибка!
  // Сообщаем об ошибке и выходим.
  ...
  return;
}

// Ошибки нет - продолжаем работу.
...


Что здесь неправильно? Дело в том, что функция sem_wait() является блокирующим системным вызовом. Поэтому выполнение этой функции может быть прервано, если выполняющийся поток получит какой-нибудь сигнал (например, сигнал о завершении другого потока). В этом случае функция вернет -1, а errno будет равна EINTR.

При этом никакой ошибки на самом деле нет, это просто способ дать программе обработать пришедший сигнал. Это необходимо учитывать, и вызов sem_wait() лучше всего делать в цикле. Например, таком:

int res;
do
{
  res = sem_wait(&sem);
}
while (0 != res && EINTR == errno);

if (0 != res)
{
  // Ошибка!
  // Сообщаем об ошибке и выходим.
  ...
  return;
}

// Ошибки нет - продолжаем работу.
...

Это касается и других блокирующих функций. Например, select, wait, waitpid и др. Возможность прерывания функции с ошибкой EINTR обычно описана в man'е.

12 комментариев:

  1. для этой конструкции есть макрос, можно написать и вот так, более красиво:
    int res;
    res = TEMP_FAILURE_RETRY (sem_wait(&sem));
    if (0 != res)
    {
    // Ошибка!
    // Сообщаем об ошибке и выходим.
    ...
    return;
    }
    однако в случае если вызов select и возникает EINTR, то select сбрасывает в 0 все дескрипторы для которых он ждет данные, так как данных типа небыло. И перед повторным вызовом нужно инициализировать все структуры которые ему передаются. Поэтому для select нельзя использовать этот макрос. Вчера об это шишку набил )))

    ОтветитьУдалить
  2. Интересное замечание. Спасибо.

    ОтветитьУдалить
  3. Магазин питания для спорта, официальный сайт которого доступен по адресу: SportsNutrition-24.Com, реализует обширный выбор спортивного питания, которые принесут пользу и достижения как профессиональным спортсменам, так и любителям. Интернет-магазин производит свою деятельность уже большое количество лет, предоставляя клиентам со всей России качественное спортивное питание, а помимо этого витамины и особые препараты - https://sportsnutrition-24.com/predtrenirovochnye-kompleksy/. Спортпит представляет собой категорию продуктов, которая призвана не только лишь улучшить спортивные достижения, но и благоприятно влияет на здоровье организма. Подобное питание вводится в повседневный рацион с целью получения микро- и макроэлементов, витаминов, аминокислот и белков, а кроме этого многих других недостающих веществ. Не секрет, что организм спортсмена в процессе наращивания мышечной массы и адаптации к повышенным нагрузкам, остро нуждается в должном количестве полезных веществ. При этом, даже правильное питание и употребление растительной, а также животной пищи - не гарантирует того, что организм получил необходимые аминокислоты или белки. Чего нельзя сказать о высококачественном спортивном питании. Об наборе товаров Интернет-магазин "SportsNutrition-24.Com" продает качественную продукцию, которая прошла ряд проверок и получила сертификаты качества. Посетив магазин, клиенты смогут подобрать для себя товары из следующих категорий: - L-карнитинг (Л-карнитин) представляет собой вещество, схожее витамину B, синтез которого осуществляется в организме; - гейнеры, представляющие из себя, белково-углеводные консистенции; - BCAA - средства, содержащие в своем составе три важные аминокислоты, стимулирующие рост мышечной массы; - протеин - чистый белок, употреблять который можно в виде коктейлей; - современные аминокислоты; - а также ряд других товаров (нитробустеры, жиросжигатели, особые препараты, хондропротекторы, бустеры гормона роста, тестобустеры и все остальное). Об оплате и доставке Интернет-магазин "SportsNutrition-24.Com" предлагает огромное обилие товаров, которое полностью способно удовлетворить проф и начинающих любителей спорта, включая любителей. Большой опыт дозволил фирмы сделать связь с крупнейшими поставщиками и изготовителями спортивного питания, что позволило сделать ценовую политику гибкой, а цены - демократичными! К примеру, аминокислоты или гейнер приобрести можно по стоимости, которая на 10-20% ниже, чем у конкурентов. Оплата возможна как наличным, так и безналичным расчетом. Магазин предлагает широкий выбор методов оплаты, включая оплату различными электронными платежными системами, а также дебетовыми и кредитными картами. Главный офис компании расположен в Санкт-Петербурге, однако доставка товаров осуществляется во все населенные пункты РФ. Кроме самовывоза, получить товар можно посредством любой транспортной организации, выбрать которую каждый клиент может в индивидуальном порядке.

    ОтветитьУдалить
  4. Наш сайт рассказывает о новостях бокса и ММА. Читатель узнает о ближайших и прошедших боях - результаты поедиков ММА. Специалисты делятся своими прогнозами на наиблежайшие действия, проводят разбор окончившихся поединков. Вы можете прочитать интервью со знаменитыми бойцами и их тренерами. Новости ММА, бокса Все предстоящие и прошедшие бои освещаются с подробным разбором, анализом и комментариями спортивных экспертов. Подписавшись на Octagon, вы будете в курсе всех событий в области боевых искусств. Самые интересные, запоминающиеся бои без правил в нашем видеоконтенте. Ознакомьтесь с выводами, разбором захватывающих моментов поединков. Действия, расписание, видео В разделе указано расписание грядущих боев. Даты, время начала боя вы можете посмотреть на интернет-сайте. Предлагается просмотр видео самых увлекательных моментов схваток. Кто не хочет заниматься скучным чтением, может посмотреть видео прогноз. Легкая, юмористическая подача информации легко воспринимается и усваивается у подписчиков. Видеоряд постоянно обновляется, предлагается только качественный контент. Биографии, рейтинги боксеров Предоставлены подробные биографии знаменитостей, рейтинг UFC. Вы узнаете, каким был путь героя к покорению Олимпа. Приводятся все весовые показатели спортсменов. Предоставляется информация о самочувствии боксера до и после поединка. Проводится разборка стиля и техники бойцов. Octagon.express предлагает только полностью достоверную информацию. На нашем веб-сайте вы ознакомитесь и узнаете о всех тонкостях смешанных боевых искусств. Точные прогнозы, достоверные рейтинги - наше основное кредо. Подписавшись на Telegram канал, вы будете в курсе всех новостей боевых искусств. Все последние бои UFC не ускользнут от вас.

    ОтветитьУдалить
  5. Веб-сайт Mostbethit.net предлагает посетителям ближе познакомиться с одноименной БК. Интернет-ресурс посвящен описанию главных преимуществ конторы. На проекте гости узнают другие важные моменты - Мостбет промокод на сегодня. Букмекерская контора для продвижения зеркальных ссылок использует партнерские сайты. Одним из таких ресурсов стал описываемый проект. На страничках портала пользователи найдут: - ссылки на зеркала букмекера; - описание БК; - правила работы с конторой; - особенности бонусной политики; - действующие промокоды; - описание способов пополнения баланса; - анализ отзывов о букмекере; - рекомендации для создания аккаунта. Проект предлагает детальный «разбор» оператора ставок. Регистрация для использования не нужна. Гость может свободно переходить по разделам, получать информацию. Языковая доступность - плюс интернет-сайта. Русская версия раскрывается по умолчанию. Пользователь может установить любой из 23 доступных языков. Описания на портале детальные. Создатели постарались отметить каждый нюанс. Для улучшения пользовательского восприятия тексты снабжены снимками экрана. Информативность максимальная. Предложенные на проекте ссылки направят игроков на действующее зеркало БК. Это обеспечивает круглосуточный доступ к конторе. Об использовании VPN и других способов обхода санкций Роскомнадзора удается забыть. Ссылки на дублирующий веб-сайт Мостбет предложены на каждой странице. Долго находить действующие адреса не придется. Разработчики выпустили мобильную версию сайта. Проект оптимизирован под гаджеты с разной диагональю дисплея. Пользоваться ресурсом удобно со смартфонов и планшетов. Онлайн-портал не предлагает спортивных ставок и других азартных утех. Закрыть сайт регулятор не может. В итоге ресурс обеспечивает круглосуточный доступ к БК.

    ОтветитьУдалить
  6. Наш онлайн-кинотеатр предлагает своим зрителям погрузиться в мир интересных турецких сериалов. Интернет-портал предлагает широкий каталог многосерийных кинофильмов на любой вкус, а главное, они все имеют российское озвучивание. Мы регулярно пополняем медиатеку, чтобы нашему гостю не приходилось искать новинки на сторонних ресурсах - турецкие сериалы на русском. Что предлагает онлайн-кинотеатр своим посетителям? - Полное отсутствие рекламы. Ничего не сможет отвлечь от игры любимых актеров! - Постоянные обновления каталога. Теперь вы не пропустите новинки турецкого кинематографа! - Высококачественное озвучивание - долой русско-турецкий словарь! - Возможность смотреть сериалы на всевозможных устройствах. Дорога на работу теперь станет увлекательной и интересной! - Удобство просмотра. Наш видеопроигрыватель может приостановить только низкая скорость интернет-соединения. Интернет-портал турецких телесериалов создан специально для тех, кто всегда находится в поиске ресурсов, позволяющих смотреть зарубежные многосерийные фильмы без ограничений. Сейчас в вашем распоряжении огромное количество фильмов с хорошим качеством изображения и русским переводом. Начать просмотр можно любому гостю интернет-сайта без каких-либо ограничений. Но мы все же рекомендуем вам пройти минутную регистрацию - это позволит вам создавать закладки, оставлять комменты и обсуждать просмотренные картины с другими пользователями портала. А если вы только начали знакомство с турецкими сериалами, сделать выбор в пользу той или иной фильмы поможет короткая инструкция. Погрузится в мир головокружительной любви, трагических встреч, кровопролитной вражды и опасных игр с самой судьбой поможет наш онлайн-кинотеатр телесериалов из Турции. Позитивного просмотра и положительных эмоций!

    ОтветитьУдалить
  7. Ставки на спорт с каждым днем становятся все популярнее. У беттеров (игроков на ставках) из Узбекистана появилась возможность делать ставки в национальной валюте на сайте - получить бонусы БК Mostbet в Узбекистане. При регистрации в этой букмекерской конторе гость выбирает игровую валюту - узбекский сум, российский рубль, доллар или евро. Всего доступно 19 валют! Играть на портале сумеют не только жители Узбекистана, ресурс переведен на 25 языков. Ставки на спорт На портале Мостбет можно сделать ставки на все ключевые события мира спорта - футбол, баскетбол, хоккей, волейбол, теннис и прочие, включая зимние виды спорта, легкую атлетику и единоборства. Для того, что бы делать ставки следует пройти процедуру регистрации, которая займет менее 5 минут. Для гостей этой букмекерской конторы доступны ставки до матча (прематч) и в режиме реального времени (Live). Казино В Мостбет можно так же сыграть в азартные игры - карты, рулетку и слоты (игровые автоматы с вращающимися барабанами). Слотов очень много - на любой вкус, от традиционных вишенок-клубничек до современного софта с несколькими игровыми полями и бонусными раундами. На Мостбет у игроков единый счет для ставок и для казино. Приложение на веб-сайте Мостбет вы можете загрузить приложение для игры с мобильных устройств - планшетов и смартфонов под управлением операционной системы Андроид и iOS. Ссылка для скачивания этих программ имеется в самом верху главной страницы. На портале вы можете подробно ознакомится с отзывами игроков. Если имеется проблема со входом на сайт, то на странице «Зеркало» вы можете можете узнать об альтернативных способах входа, в случаях блокировки ресурса. Для связи с гостями работает онлайн чат, в каком вы можете задать любой интересующий вопрос техническим консультантам букмекерской конторы.

    ОтветитьУдалить
  8. Ставки на спорт с каждым днем становятся все популярнее. У беттеров (игроков на ставках) из Узбекистана появилась возможность делать ставки в национальной валюте на сайте - ставки на спорт в БК Mostbet. При регистрации в этой букмекерской конторе пользователь выбирает игровую валюту - узбекский сум, русский рубль, доллар или евро. Всего доступно 19 валют! Играть на портале смогут не только лишь жители Узбекистана, ресурс переведен на 25 языков. Ставки на спорт На сайте Мостбет можно сделать ставки на все ключевые события мира спорта - футбол, баскетбол, хоккей, волейбол, теннис и другие, включая зимние виды спорта, легкую атлетику и единоборства. Для того, что бы делать ставки требуется пройти функцию регистрации, которая займет не более 5 минут. Для гостей этой букмекерской конторы доступны ставки до матча (прематч) и в режиме реального времени (Live). Казино В Мостбет вы можете так же сыграть в азартные игры - карты, рулетку и слоты (игровые автоматы с вращающимися барабанами). Слотов очень много - на любой вкус, от классических вишенок-клубничек до современного софта с несколькими игровыми полями и бонусными раундами. На Мостбет у игроков единый счет для ставок и для казино. Приложение на портале Мостбет можно загрузить приложение для игры с мобильных устройств - планшетов и телефонов под управлением операционной системы Андроид и iOS. Ссылка для скачивания этих программ располагается в самом верху главной страницы. На веб-сайте можно ознакомиться с отзывами игроков. Если имеется проблема со входом на сайт, то в разделе «Зеркало» можно выяснить об других способах входа, в случае блокировки ресурса. Для связи с пользователями работает онлайн чат, в котором вы можете задать любой интересующий вопрос техническим консультантам букмекерской конторы.

    ОтветитьУдалить
  9. В последние годы популярность зарубежных телесериалов и полнометражных фильмов бьет все рейтинги. Но где их вы можете посмотреть? В интернете множество онлайн-кинотеатров, которые предлагают просмотр интересных киноработ от зарубежных кинокомпаний - турецкие сериалы 2022. Огромный выбор на любой вкус Но особенно удобно смотреть зарубежные киносериалы и фильмы на портале Turksezon.net. На этой платформе представлена большущая подборка самых популярных сегодня фильмов. На площадке вы можете бесплатно смотреть различные проекты: - турецкие; - колумбийские; - индийские; - бразильские. Все зарубежные проекты на площадке идут на русском языке. Привлекательно не только хорошее качество перевода, но и высочайшее разрешение. Многие киносериалы и полнометражное кино на портале идут в формате 720 HD. Широкое разнообразие зарубежных фильмов - одна из особенностей онлайн-кинотеатра. На сайте находятся киносериалы и полнометражное кино в самых разных жанрах. Здесь непременно найдутся достойные внимания проекты для ценителей драм, фэнтези, боевиков, комедий. Имеется множество криминальных, исторических, семейных и военных киноработ. В соответствующих рубриках расположены востребованные детективы, триллеры, мелодрамы. Фантастическое кино, в том числе сериалы, можно подобрать в отдельном блоке. Такое ранжирование по жанрам очень удобно для выбора подходящего кинофильма. Удобство поиска увлекательных фильмов Еще одна особенность онлайн-кинотеатра заключается в удобстве поиска увлекательного кинофильма. Каждый гость может найти кино, которое выпущено в определенный период. На сайте в отдельных блоках находятся проекты, выпущенные с 2016 до 2022 годы соответственно. К каждому фильму на площадке идет небольшое, но вместительное описание. Благодаря ему каждый пользователь сможет подобрать именно тот проект, что ему наиболее увлекателен.

    ОтветитьУдалить
  10. Retivabet - максимально перспективный и подходящий букмекерский интернет-сайт - Ретивабет пополнение счета, депозиты. На веб-сайте можно найти разнообразные виды развлечений на любой вкус: казино, букмекерские ставки, игры. Если вы любитель казино, здесь для вас предусмотрено все необходимое. Легкий доступ к игровым слотам, карточным играм и рулетке, а кроме этого возможность поучаствовать в турнире. Главная задача турнира - вырваться на лидирующие позиции в турнирной таблице, потому что крупный призовой фонд будет разделен между первыми тридцатью победителями. И чем выше ваша позиция в таблице, тем больший кусок пирога вам достанется. Для ценителей спорта Retivabet предлагает обширный спектр ставок. Тут представлены не только всемирно популярные чемпионаты и команды, но и новички из разных лиг и стран, что делает результат еще более волнительным и интересным. Футбол, баскетбол, хоккей, теннис, снукер, дартс, скачки, гонки и многое другое, на чем вы можете заработать хорошие деньги. Выбор за вами. Киберспорт кроме этого стал неотъемлемой частью букмекерской компании. Теперь клиент может делать ставки не только на Пре-Матчи, но и на игры в режиме онлайн, в любое время дня и ночи. Для того, чтобы стать клиентом огромной семьи Revitabet, необходимо пройти регистрацию на интернет-сайте Retivabet.net. Это не займет более десяти минут, после чего новый клиент получает бонусы от фирмы, которыми в последствие, может пользоваться на свое усмотрение. Виды бонусов: - Приветственные; - Кешбэк с сумы ставок; - Бонус за серию проигрышей; - Экспресс бонус. Пополнение счета возможно разными способами, что делает это максимально удобным для клиентов. Можно использовать для пополнения и вывода средств банковские карты, мобильные платежи, интернет банкинг. Никаких комиссий со стороны букмекерской компании, и даже приятные бонусы за пополнения. Никаких подводных камней, только прозрачно чистое и выгодное развлечение!

    ОтветитьУдалить
  11. Интернет-сайт казино Супер Слотс представляет собой отличное сочетание удобства и функционала. Любой из разделов оснащен опциями, которые будут понятны и полезны любому пользователю - Супер Слотс отзывы о выплатах. Сайт предлагает пройти несложную и быструю регистрацию. Это можно сделать 3-мя вариантами: с помощью аккаунта в соцсетях, номера телефона либо электронной почты. После регистрации открывается кошелек для пополнения средств и весь ассортимент слотов. Говоря о доступных слотах, стоит отметить богатую коллекцию онлайн-сайта. Она нередко обновляется и содержит как классические слоты, так и новинки игровой индустрии с необыкновенными правилами. Количество слотов на портале превышает 200 штук. На веб-сайте предложен сегмент с широкой линейкой бонусов. К ним относятся депозитные и бездепозитные призы. Депозитные отличаются разнообразными предложениям в форматах приветствия, кэшбека, турниров и розыгрышей. Бездепозитные бонусы представлены фриспинами, которые игроки получают благодаря промокодам. Промокоды, в свою очередь, это бесплатное поощрение от сайта. Они даются бесплатно как новым, так и старым игрокам. Их раздача связана с особенными датами, открытием новейших слотов либо крупными турнирами. С помощью промокодов пользователи получают все виды бонусов, представленные на портале. Более того, интернет-сайт предлагает установить официальное приложение. В соответствующем разделе можно изучить мобильную версию, не уступающую в функционале компьютерной. Стоит упомянуть, что для обеих версий одинаково качественно работает служба поддержки. Портал казино информативен и грамотно спроектирован. Он предлагает большое количество функций и услуг, которые можно без труда подобрать в несколько кликов. Тут каждый игрок становится счастливым пользователем.

    ОтветитьУдалить
  12. В последние годы популярность зарубежных телесериалов и полнометражных фильмов бьет все рейтинги. Но где их можно посмотреть? В интернете много онлайн-кинотеатров, которые предлагают просмотр интересных киноработ от иностранных кинокомпаний - индийские фильмы. Огромный выбор на любой вкус Но в особенности комфортно смотреть зарубежные киносериалы и фильмы на веб-сайте Turksezon.net. На этой платформе представлена большущая подборка самых популярных фильмов. На площадке можно бесплатно смотреть разные проекты: - турецкие; - колумбийские; - индийские; - бразильские. Все зарубежные проекты на площадке идут на русском языке. Привлекательно не только лишь хорошее качество перевода, да и высокое разрешение. Многие киносериалы и полнометражное кино на портале идут в формате 720 HD. Широкое обилие зарубежных фильмов - одна из особенностей онлайн-кинотеатра. На сайте находятся киносериалы и полнометражное кино в самых различных жанрах. Здесь обязательно найдутся интересные проекты для ценителей драм, фэнтези, боевиков, комедий. Имеется множество криминальных, исторических, семейных и военных киноработ. В соответствующих рубриках расположены востребованные детективы, триллеры, мелодрамы. Фантастическое кино, в том числе киносериалы, вы можете найти в отдельном блоке. Такое ранжирование по жанрам очень комфортно для выбора подходящего кинофильма. Удобство поиска увлекательных фильмов Еще одна особенность онлайн-кинотеатра заключается в удобстве поиска интересного кинофильма. Каждый гость может найти кино, которое выпущено в определенный период. На интернет-сайте в отдельных блоках расположены проекты, выпущенные с 2016 до 2022 годы соответственно. К каждому кинофильму на площадке идет маленькое, но емкое описание. Благодаря ему каждый пользователь сможет подобрать конкретно тот проект, что ему наиболее увлекателен.

    ОтветитьУдалить