Linux 內核資源限制 -- 棧限制

1.序言

今天某同事突然問我:我在Linux上寫了一個測試程序,在函數內部定義了一個很大的數組,一運行就 Segmentation fault.    
當時一想肯定是棧溢出了。其實這樣說也不準確,還是決定去看內核代碼,其實內核對用戶進程是有資源限制的。

2.task_struct

既然是跟進程相關,那麼首先得想到進程相關的數據結構task_struct,查找資源限制相關的結構,task_struct裏面有這麼個結構 struct signal_struct *signal。信號相關裏面又包含對資源的限制struct rlimit rlim[RLIM_NLIMITS];

資源限制

3./proc文件系統

也可以從/proc文件系統查看到進程棧空間大小的限制。

cat /proc/self/limits 

limit

NOTE:算一下應該是8M的樣子,其實棧空間已經很大了。
如果把局部數組設置成該值,鐵定崩潰。

I.後記

出了問題不用怕,去尋根問底就好。總能找到你所需要的答案。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章