The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Отлов записи в уже закрытый сокет (SIGPIPE) (pipe signal error)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: pipe, signal, error,  (найти похожие документы)
Date: Tue, 25 Mar 2003 16:11:12 +0500 From: Igor Sysoev <is at rambler-co.ru> Newsgroups: ftn.ru.unix.prog Subject: Отлов записи в уже закрытый сокет (SIGPIPE) > к удалённому серверу открывается сокет, однако иногда случается, что удалённая > машина закрывает его раньше, нежели моя посылает по нему данные. В итоге прога > завершается по SIGPIPE. Как правильно проверять, закрыт ли сокет удалённым > компом перед записью - отлавливать самому сигнал SIGPIPE или же использовать > getsockopt непосредственно перед записью для проверки ошибки сокета ? Для SIGPIPE нужно сказать SIG_IGN. После этого любая операция с сокетом, которая вызывает SIGPIPE, будет возвращать ошибку EPIPE.
From: Volodymyr Tarasenko <tvn@upc.kiev.ua> > MZ> машина закрывает его раньше, нежели моя посылает > MZ> по нему данные. В итоге прога > MZ> завершается по SIGPIPE. > > сделать > signal(SIGPIPE, SIG_IGN); > чтобы программа не завершалась. > Только не signal, а sigaction, поскольку после прихода первого SIGPIPE, обработчик сбросится на дефолтный ...
From: Valentin Nechayev <netch@segfault.kiev.ua> >> сделать >> signal(SIGPIPE, SIG_IGN); >> чтобы программа не завершалась. VT> Только не signal, а sigaction, поскольку после прихода первого SIGPIPE, VT> обработчик сбросится на дефолтный ... По-моему, не сбросится. 1. signal() в разных системах работает по-разному. BSD - не сбросит независимо от того, что в handler'е. 2. SIG_IGN не сбрасывается, IMO. Потому что сбрасывается "when deliver", а SIG_IGN приводит к тому, что сигнал оказывается не delivered, а ignored. Это по терминологиии BSD мана. По Posix, есть "disposition" сигнала, но оно тоже, AFAIS, не происходит при SIG_IGN. Если кто-то читает Posix иначе, или знает систему, что сбрасывает SIG_IGN в SIG_DFL - расскажите.

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Спонсоры:
MIRhosting
Fornex
Hosting by Ihor
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2019 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру