我正在製作服務器,並使用fork()創建子進程,但我對此有所懷疑。這裏有一些:有關分叉進程的問題
- 爲什麼你需要關閉父進程中的子進程中的主要套接字和新的連接接受套接字? (在接受一個新的連接之後),我認爲套接字只是帶有一些id的整數,用於訪問某些系統範圍對象中的打開的套接字,這些套接字只能通過系統函數調用接受。在這種情況下,fork只會複製整數,但對打開的套接字沒有影響。
- 我檢查並發現,如果我在一個類方法內部派生一個進程,所有成員都被複制。那麼,我發現它是在編輯上覆制的,這是否意味着我的服務器類將被複制到使用非常量函數的每個子項中?我如何在所有這些進程之間共享一些內存(如任務列表,每個孩子在父母正在從中讀取東西時將其中的東西放入其中)?我認爲fork不適合這個功能。什麼是最好的方法?
附:我很確定我知道第二個問題的答案,即clone(),但只是想確保這是正確的功能。
這是非常翔實的。它確實很好地解釋了套接字。現在很清楚。其實我有一些多線程的經驗。我曾與pthreads工作,但叉似乎很好,因爲你不需要另一個功能來做這件事。但是......我現在可能會使用pthread;) – Pijusn 2012-01-11 18:11:47