시그널(Signal)
비동기적으로 프로세스에 무언가 발생했음을 알리는 표준 신호
핵심
SIGUSR1/SIGUSR2 시그널을 사용하여 server에서 client들의 메세지를 받는 것이 목표입니다.
개인적으로 중요하다고 생각하는 사항은 아래과 같습니다.
•
mandatory : 비트 연산, 시그널 처리, 메시지 처리 속도
•
bonus : 시그널 누락 처리, 유니코드 지원
시그널 핸들러 사용 중 서버가 먹통이 되는 이유는 무엇일까요?
시그널 핸들러에서 비동기 안전 함수를 사용하거나 전역 변수를 사용하면 데이터 레이스가 발생한다는 사실 알고 계셨나요? 이 경우 의도치 않은 동작이 발생할 수 있습니다.
자세한 내용은 [시그널 주의사항]에서 다루므로 이 부분은 꼭 읽어주세요!
시퀀스 다이어그램 예시
sequenceDiagram autonumber loop send bits Client->>Server: SEND<br>[kill SIGUSR1/SIGUSR2] alt 응답 Server-->>Client: ACK<br>[kill SIGUSR1] else Server-->>Client: ERR<br>[kill SIGUSR2] end end Note right of Server: print message
Mermaid
복사
Prev
문서 양식 사용을 허락해주신 suhshin님 감사합니다.