Linux rlimit 函式詳解

2021-09-13 15:30:27 字數 2362 閱讀 1788

每個程序在執行時系統不會無限制的允許單個程序不斷的消耗資源,因此都會設定資源限制。linux系統中使用resource limit來表示,每個程序都可以設定不同的資源限制,當前程序和其以後fork的子程序會遵循此限制,而其他程序不受當前程序條件的影響。

ulimit是乙個shell內建的命令:

ulimit 是 shell 內建
通過該命令,我們可以設定當前shell環境中的一些資源限制值,這些設定會影響到該shell和由該shell中執行的其餘命令,對於不相關的其他shell程序不受影響。

$ ulimit -a

core file size (blocks, -c) 0

data seg size (kbytes, -d) unlimited

scheduling priority (-e) 0

file size (blocks, -f) unlimited

pending signals (-i) 127633

max locked memory (kbytes, -l) 64

max memory size (kbytes, -m) unlimited

open files (-n) 1024

pipe size (512 bytes, -p) 8

posix message queues (bytes, -q) 819200

real-time priority (-r) 0

stack size (kbytes, -s) 8192

cpu time (seconds, -t) unlimited

max user processes (-u) 127633

virtual memory (kbytes, -v) unlimited

file locks (-x) unlimited

相關的資源限制命令選項如上所示,比如可以使用ulimit -c 1來使當前shell環境下的程序產生core檔案,並且core檔案大小限制在1個block。

#include int getrlimit(int resource, struct rlimit *rlptr);

int setrlimit(int resource, const struct rlimit *rlptr);

程序的資源限制由系統在啟動時程序0初始化,後續程序從程序0處繼承,各個程序之後都可以利用上述兩個api獲取和重新設定程序資源限制。

struct rlimit ;
對應的resource引數可選如下:

rlimit_as/rlimit_vmem: 這兩個資源表示的是同乙個含義,都是只address space限制,可用記憶體使用者位址空間最大長度,會影響到sbrk和mmap函式。

rlimit_stack:棧的長度,預設一般是8k

rlimit_core:程式crash後生成的core dump檔案的大小,如果為0將不生成對應的core檔案。

rlimit_nofile:程序能夠開啟的最多檔案數目,此限制會影響到sysconf的_sc_open_max的返回值。

rlimit_nproc:每個使用者id能夠擁有的最大子程序數目,此限制會影響到sysconf的_sc_child_max的返回值。

rlimit_nice:對應程序的優先順序nice值。

rlimit_swap:程序能夠消耗的最大swap空間。

rlimit_cpu:cpu時間的最大值(秒單位),超過此限制後會傳送sigxcpu訊號給程序。

rlimit_data:資料段的最大長度。預設為unlimited

rlimit_fsize:建立檔案的最大位元組長度。預設為ulimited

rlimit_msgqueue:為posix訊息佇列可分配的最大儲存位元組數

rlimit_sigpending:可排隊的訊號最大數量

rlimit_npts:可同時開啟的偽終端數目

rlimit_rss:最大可駐記憶體位元組長度

rlimit_sbsize:單個使用者所有套接字緩衝區的最大長度

rlimit_memlock:乙個程序使用mlock能夠鎖定儲存空間中的最大位元組長度

最後還有一點,如果讀取和設定的rlimit中的值為rlim_infinity巨集,那麼表示是無限制,unlimited。

mod函式詳解

我們知道,mod函式是乙個求餘函式,其格式為 mod nexp1,nexp2 即是兩個數值表示式作除法運算後的餘數。那麼 兩個同號整數求餘與你所知的兩個正數求餘完全一樣 即兩個負整數與兩個正整數的演算法一樣 一 兩個異號整數求餘 1.函式值符號規律 餘數的符號 mod 負,正 正 mod 正,負 負...

CDC PatBlt 函式詳解。

函式功能 該函式使用當前選入指定裝置環境中的刷子繪製給定的矩形區域。通過使用給出的光柵操作來對該刷子的顏色和表面顏色進行組合。函式原型 bool patblt hdc hdc,int nxleft,int nyleft,int nwidth,int nheight,dword dwrop 引數 hd...

php header 函式詳解

一 作用 php只是以http協議將html文件的標頭送到瀏覽器,告訴瀏覽器具體怎麼處理這個頁面,至於傳送的內容則需要熟悉一下http協議了,與php無關了,可參照http www.w3.org protocols rfc2616 rfc2616。傳統的標頭一定包含下面三種標頭之一,並只能出現一次。...