Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> send + SIGPIPE + QNX 
:(
    Опции темы
proc_maker
Дата 15.5.2008, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 11.11.2006

Репутация: 1
Всего: 1



Здравствуйте уважаемые эксперты,

вот такой вопрос: в POSIXе есть MSG_NOSIGNAL опция для функции send чтобы не поймать SIGPIPE если коннект разорван, однако в QNX этой опции нет (socket.h).

signal(SIGPIPE, SIG_IGN) перехватит SIGPIPE для всего процесса что крайне нежелательно.

Какой выход из ситуации для QNX?

Огромное спасибо,
Дмитрий
PM MAIL ICQ Skype   Вверх
MAKCim
Дата 16.5.2008, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



proc_maker, 
Цитата(proc_maker @  15.5.2008,  22:03 Найти цитируемый пост)
Какой выход из ситуации для QNX?

перед send() определить, получен ли сегмент RST


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
proc_maker
Дата 16.5.2008, 08:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 11.11.2006

Репутация: 1
Всего: 1



MAKCim, не подскажите как это сделать?

Спасибо,
Дмитрий
PM MAIL ICQ Skype   Вверх
MAKCim
Дата 16.5.2008, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(proc_maker @  16.5.2008,  08:37 Найти цитируемый пост)
MAKCim, не подскажите как это сделать?

проверить состояние клиента перед send()
если оно CLOSE_WAIT, то send() вызовет либо SIGPIPE, либо получение клиентским TCP сегмента RST
в Linux проверяется так
Код

struct tcp_info info;
socklen_t len = sizeof(info);
getsockopt(sock_fd, IPPROTO_TCP, TCP_INFO, &info, &len);
if (info.tcpi_state == TCP_CLOSE_WAIT) {
/* bla-bla-bla */
}

в QNX нечто подобное должно быть


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
proc_maker
Дата 20.5.2008, 07:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 11.11.2006

Репутация: 1
Всего: 1



Спасибо всем, проблема решилась обновлением версии QNX в которой присутствует MSG_NOSIGNAL.

С уважением,
Дмитрий
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.3872 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.