0
클라이언트 연결을 처리하기 위해 수락 호출 후 분기하는 웹 서버에 대한 요청 통계를 나타내는 공유 리소스가 있습니다. 어떤 신호가 부모 프로세스에 의해 잡힐 때 stderr에이 통계를 인쇄하고 싶습니다. 그러나 stats 구조체는 세마포어로 보호됩니다. 교착 상태로 인해 시그널 핸들러에서 세마포어를 잠 그거나 잠금 해제하는 것은 나쁜 생각입니다. 문제. 나는 SIG 처리기에 플래그를 설정하고 accept() 후 EINTR를 먼저 확인한 다음 플래그를 확인하여 플래그가 설정된 경우 상위 프로세스에서 통계를 인쇄하려고 시도했지만 작동하지 않았습니다. 어떤 아이디어?신호 처리기 내에서 공유 리소스로부터 읽기
그래서 나는이 문제를 해결할 방법을 찾은 것 같습니다. 기본적으로 sigaction()으로 시스템 콜을 자동으로 다시 시작하고 EINTR에 대한 accept()의 리턴 값을 확인하는 것이 효과가있는 것 같습니다. – usddddd