看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux C (Ubuntu 11.10) 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) libev 問題(Question): 請問 我的socket只要一accept超過1023 馬上就會return -1 errno=EMFILE 我查了很久的資料 有關於這個file descriptor的上限都是用ulimit打開的 我也去 /etc/security/limits.conf 裡面將soft和 hard都改成65535 再回到ulimit看都是正常的 但是一到1024還是馬上就錯掉... 因為我的API是用epoll 應該也沒有1024這個問題 EMFILE指的是單一一個程式裡面的檔案上限 不知道我有沒有什麼地方漏改的呢 另外我如果一個程式裡面一直用socket開fd是沒有問題的 但是一個socket一直接收連線就會出現錯誤 請指教了 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.171.150
james732:我記得ulimit也會對使用者控制,用root權限跑跑看 01/23 02:43
sudada:我用root沒錯啊QQ 01/23 02:44
james732:我有做過同時開上萬個socket,不過忘記怎麼做的...XD 01/23 02:44
asoedarren:ulimit是在程式中設定的嗎? 01/23 03:11
asoedarren:code貼上來看看 01/23 03:11
scwg: sysctl fs.file-max 夠大嗎? 改設定檔不會改到目前設定 01/23 03:56
sudada:fs.file-max = 152016 這是目前看的狀態 01/23 11:18
sudada:ulimit是我在執行程式前直接在console下命令改的 01/23 11:18