1
유닉스에서 c로 채팅을하고있다. 나는 서버 쪽과 클라이언트 쪽을 가지고있다. 클라이언트가 쉘 창을 닫을 때를 제외하고 모두 잘 작동합니다. 그 경우 클라이언트는 그가 가고있는 서버에 말하지 않았고 서버는 그가 여전히 로그인했다고 생각합니다.쉘이 닫힐 때 어떤 신호를 보냅니 까?
클라이언트가 X 버튼을 눌러 단말기를 닫으면 신호를 처리하고 싶습니다. 내 프로세스에는 어떤 신호가 있습니까? SIGHUP, SIGQUIT 및 SIGTERM을 처리하려고했지만 작동하지 않는 것 같습니다.
에서 찾을 수 있습니까? 그렇지 않으면 epoll을 사용하는 것이 좋습니다. 그렇게하면 클라이언트를 닫을 때 (클라이언트 측 소켓을 닫음) epoll이 처리 할 것입니다. 예를 들어 전체보기 https://banu.com/blog/2/how-to-use-epoll-a-complete-example-in-c/ –
SIGHUP이 무엇을 얻어야할까요? 어쩌면 신호 처리기에 문제가있을 수 있습니다. –
TCP 소켓을 사용하고 있습니까? 자세한 내용을 추가하십시오. 터미널을 닫으면 클라이언트가 종료되므로 서버 측에서 read 함수는 0을 반환한다는 사실을 사용할 수 있습니다. – Edge7