Linux網絡編程——進程池實現過程詳解(1)


進程池

父進程的實現流程

1、定義數據結構pChild,申請子進程數目的結構體空間
2、通過循環,socketpair創建全雙工管道,創建子進程,將子進程pid,管道對端,是否忙碌等信息存儲
3、socket,bind,listen,對應的端口處於監聽狀態 netstat
4、epoll_create創建epfd,監控socketFd和所有子進程的管道對端
5、while(1)循環 epoll_wait等待客戶端的請求及子進程是否有通知
如果socketFd可讀,說明是客戶端有連接請求,accept對應連接請求,得到new_fd,循環遍歷,找到非忙碌的子進程,將new_fd發送給對應子進程,將對應子進程標識為忙碌,然后父進程關閉new_fd。

判斷就緒的描述符 是哪個子進程的管道對端,就將對應子進程標識為非忙碌,同時讀出管道內數據。

子進程的實現流程

while(1)
{
1、接收任務,得到newFd
2、通過newFd給客戶端發送文件
3、關閉newFd
4、通過寫管道,通知父進程完成文件下載任務
}

詳細代碼見下篇。
Linux網絡編程——進程池實現過程詳解(2)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM