2013-08-26 2 views
0

나는 socket id (소켓 FD를 3으로 얻음)를 생성하고 그것을 인쇄하고 닫는 간단한 프로그램을 linux에 썼다. 종료 직전에 사용자 입력을 기다립니다. 다른 쉘에서 하나의 프로그램 인스턴스를 시작했습니다. 두 번째 프로그램도 소켓을 만들었지 만 동일한 소켓 FD 즉 3이 있습니다. 그런 다음 프로그램을 확장하여 동일한 프로그램에서 두 개의 소켓을 만들었습니다. 이제 소켓 FD가 3과 4가되었습니다.소켓 FD는 리눅스 프로세스에만 적용됩니까?

이제 소켓 FD 값이 프로세스와 관련이 있는지 여부가 궁금합니다. 그렇다면 select 호출이 데이터를 가져온 소켓을 어떻게 올바르게 식별 할 수 있습니까?

답변

1

파일 설명자는 실행중인 프로그램 인스턴스에 고유하므로 결과가 정확합니다. 그것들은 유일하기 때문에 select()도 괜찮을 것이다.

+0

select() 호출도 프로세스마다 다르므로 다른 프로세스에서 동일한 FD를 사용하는 것이 좋습니다. –

+0

@ManojPandey - 명확성을 위해 제 대답을 업데이트했습니다. – KevinDTimm

+0

FD는 프로세스에 고유하므로 select()의 반환 값을보고 어떤 소켓에 읽을 데이터가 있는지 확인할 수 있어야합니다. select()에 fd 세트를 전달하면 select()는 fd 세트를 반환하고 이벤트가있는 fd를 설정합니다. –

관련 문제