multi threaded server에서 SIG_PIPE 를 무시하려합니다.

iamslash의 이미지

이때 메인 프로세스에서만 무시를 하면 전체 자식 쓰레드들도 알아서 무시를 하는지요? 아니면 각 쓰레드마다 무시하는 처리를 해줘야 하는지요? 조언 부탁드립니다.

익명 사용자의 이미지

이건 참고로 예기하는것뿐 답변은 아닙니다.

recv / send 함수에 보면 flag가 있는데
"MSG_NOSIGNAL" 이것을 flag로 주면
해당하는 recv/send에 대해서만 signal이 무시됩니다.

당연히 broken pipe도 무시됩니다. 그냥 리턴이 0인 경우만 발생할뿐...

iamslash의 이미지

그런데 MSG_NOSIG 는 man send 해보니깐 내용에 없는 것 같은데요...전
SUN OS 5.8 사용자입니다.
리눅스에는 있군요...쩝...

jolasen의 이미지

메인에서 무시하면 다 적용됩니다.