Linux 프로그래밍 인터페이스의 60장에서는 다음과 같이 설명합니다.
소켓, 다중 프로세스/스레드 또는 스레드/프로세스 풀을 사용하여 여러 클라이언트를 동시에 처리하도록 서버를 설계합니다.
서버 프로그램을 단순화하는 inetd로 호출되는 서버를 설계합니다.
서버가 inetd와 함께 사용되는 경우 소켓을 처리하는 대신 단순히 stdin의 입력과 stdout으로의 출력을 처리합니다. inetd는 소켓을 사용하여 들어오는 요청을 모니터링하고, 멀티플렉싱하고, 각 들어오는 요청에 대해 서버 프로그램을 실행하는 프로세스를 포크하는 부분을 처리합니다.
inetd와 함께 사용되는 서버 프로그램이 서버 프로그램의 독립형 버전처럼 동시에 여러 클라이언트를 처리하는 동일한 부분을 가질 수 있는지 궁금합니다.
inetd가 들어오는 각 요청에 대해 전체 서버 프로그램을 실행하기 위해 새로운 프로세스를 포크하는 것이 맞습니까?
그렇다면 서버 프로그램은 여러 요청을 동시에 처리할 필요가 없고 하나의 요청만 처리하면 됩니까?
inetd는 서버 프로그램을 들어오는 각 요청을 처리하기 위해 하위 프로세스를 분기하는 동시 독립 버전과 동일하게 만드나요?
독립형 다중 스레드 서버 프로그램에 비해 이것이 좋은 선택입니까?
감사해요.
답변1
예, inetd는 프로그램을 포크합니다. 즉, 각 인스턴스가 하나의 클라이언트에 서비스를 제공한다는 의미입니다.
질문"inetd를 사용할지 여부"프로그램에서 동시성을 처리하는 것이 더 합리적인 시기와 inetd에서 이를 처리하도록 하는 경우에 대한 자세한 정보입니다.