F_SETOWN에 관하여

asleea의 이미지

소켓 프로그래밍 서버코드 중,

fcntl(servSock, F_SETOWN, getpid())      //servSock는 전역변수 선언, 서버포트와 bind되 었다.
fcntl(servSock, F_SETFL, O_NONBLOCK | FASYNC);

여러 개의 프로세스들이 동일한 소켓에 접근할 수 있으므로 어느 프로그램이 시그널을 받을지에 대한 모호성 때문에

시그널을 받을 프로세스를 지정해 준다고 하는데요

당연히 서버 프로세스는 시그널을 받을 수 있고, 나머지 여러개의 프로세스들이란 클라이언트 프로세스들을 뜻하는 것 같은데

음 정확히...어떠한 프로세스들이 시그널을 받을 수 있는지 알고 싶습니다.

예를 들어 3개의 클라이언트 프로세스가 있다고 하고 SIGIO가 발생 하였을때

1번 클라이언트는 아직 servSock에 접근 하기 전 상태이고
2번 클라이언트는 servSock에 접근하였습니다.(즉 2번 클라이언트에 의해 SIGIO가 발생)
3번 클라이언트는 이미 servSock에 접근하여 연결 된 이후, accept가 이루어지고 다른 소켓을 통해 통신하고 있습니다.
(즉 현재는 아니지만 전에 접근하였었던 클라이언트)

아니면 다른 프로세스들도 SIGIO를 받을 수 있는지.?