Concurrency

inetd 是否簡化了伺服器程序,而不影響同時處理多個客戶端的部分?

  • November 25, 2020

在 Linux 程式介面中,第 60 章討論了

  • 通過使用套接字、多個程序/執行緒或執行緒/程序池來設計伺服器以同時處理多個客戶端
  • 設計一個由inetd呼叫的伺服器,簡化了伺服器程序。

如果伺服器要與 inetd 一起使用,它只需要處理來自標準輸入的輸入和輸出到標準輸出,而不是套接字。inetd 處理使用套接字的部分,用於傳入請求的多路復用監視器,並且對於每個傳入請求,派生一個程序以執行伺服器程序。

我想知道與 inetd 一起使用的伺服器程序是否仍然可以具有同時處理多個客戶端的相同部分,作為伺服器程序的獨立版本?

inetd 為每個傳入請求分叉一個新程序以執行整個伺服器程序是否正確?

那麼伺服器程序是不是不需要同時處理多個請求,而只需要一個請求呢?

inetd 是否使伺服器程序相當於一個並發的獨立版本,它派生一個子程序來處理每個收到的請求?

與獨立的多執行緒伺服器程序相比,這是一個不錯的選擇嗎?

謝謝。

是的,inetd 將分叉您的程序,這意味著每個實例將為單個客戶端提供服務。

“使用 inetd 還是不使用 inetd”這個問題提供了更多關於何時處理程序中的並發性更有意義以及何時讓 inetd 處理它的資訊。

引用自:https://unix.stackexchange.com/questions/621414