2014-11-05 5 views
8

TCP 소켓에서 SO_NOSIGPIPE를 사용하려고합니다.SO_NOSIGPIPE가 해제되지 않았습니다.

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

하지만 오류가오고있다 :

error: SO_NOSIGPIPE was not declared in this scope 

이 필요한 헤더 파일, 그것을 사용할 수 있습니다. 인터넷을 통해 검색했지만 유용한 솔루션을 얻지 못했습니다.

+1

가능한 복제본 [SIGPIPE를 방지하는 방법 (또는 적절히 처리하는 방법)] (http://stackoverflow.com/questions/108183/how-to-prevent-sigpipes-or-handle-them-properly) –

+1

표준 옵션을 사용하려면 신호를 처리 (또는 무시)하는 또 다른 방법을 찾아야합니다. 모든 표준 옵션 목록을 보려면 예 : [this reference] (http://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_10_16). –

+0

아마도이게 도움이 될까요? http://stackoverflow.com/q/17682349/2003898 – dhein

답변

10

리눅스 (또는 일부 다른 시스템)에는 SO_NOSIGPIPE이 없습니다. send()을 호출 할 때 MSG_NOSIGNAL 플래그를 대신 사용하거나 signal(SIGPIPE, SIG_IGN)을 사용하여 전체 응용 프로그램이 SIGPIPE을 무시하도록 할 수 있습니다.

관련 문제