2014-11-05 18 views
8

Próbuję użyć SO_NOSIGPIPE w gnieździe tcp.SO_NOSIGPIPE nie został usunięty

int set = 1; 
    setsockopt(sockDesc, SOL_SOCKET, SO_NOSIGPIPE, (void *)&set, sizeof(int); 

ale błąd nadchodzi:

error: SO_NOSIGPIPE was not declared in this scope 

Czy istnieją jakieś pliki nagłówkowe wymagane, aby użyć. Szukałem w Internecie, ale nie dostałem żadnego przydatnego rozwiązania.

+1

możliwy duplikat [Jak zapobiegać SIGPIPE (lub obsługiwać je prawidłowo)] (http://stackoverflow.com/questions/108183/how-to-prevent-sigpipes-or-handle-them-properly) –

+1

To nie jest standardową opcją, musisz znaleźć inny sposób obsługi (lub ignorowania) sygnału. Aby uzyskać listę wszystkich standardowych opcji, patrz np. [odniesienie] (http://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_10_16). –

+0

Może to ci pomoże? http://stackoverflow.com/q/17682349/2003898 – dhein

Odpowiedz

10

W systemie Linux nie ma żadnego SO_NOSIGPIPE (ani niektórych innych systemów). Zamiast tego możesz użyć flagi podczas wywoływania send() lub użyć signal(SIGPIPE, SIG_IGN), aby cała aplikacja zignorowała SIGPIPE.

Powiązane problemy