하는 Asio가 Signal_init.hpp에 SIGPIPE를 무시하는 코드가, 그러나 매크로 워프 그것을 io_service.hpp에있다 t라고 불렀다.asio는 SIGPIPE를 어떻게 처리합니까? '나는 매크로를 사용할 수 없습니다 발견 우분투에서 컴파일</p> <pre><code>#elif defined(__sun) || defined(__QNX__) || defined(__hpux) || defined(_AIX) || defined(__osf__) </code></pre> <p>그래서 <code>std::signal(Signal, SIG_IGN);</code> 안식처 :
그러나 닫힌 소켓에 asio로 쓸 때 complete 처리기에서 boost :: system :: error_code로 EPIPE 오류를보고 할 수 있습니다. libc doc에 따르면 :
이 경우 send는 먼저 SIGPIPE 신호를 생성합니다. 해당 신호가 무시되거나 차단되거나 해당 처리기가 반환되면 EPIPE와 함께 실패합니다.
어떻게 SIGPIPE로 설정하면 프로세스가 무시하게할까요? asio는 이것에 특별한 것을합니까?
나는 그걸 어떻게 다루는 지 궁금 하네. 그것은 SIGPIPE를 무시하지 않고 MSG_NOSIGNAL을 사용하지 않습니다. 그러나 연결이 끊긴 소켓에 쓰기를 계속하면 SIGPIPE가 전혀 없습니다! – jean