linux程序中常用的全域性資料之資源限制

2021-06-25 11:52:59 字數 1842 閱讀 1717

from:

功能描述:

獲取或設定資源使用限制。每種資源都有相關的軟硬限制,軟限制是核心強加給相應資源的限制值,硬限制是軟限制的最大值。非授權調 用程序只可以將其軟限制指定為0~硬限制範圍中的某個值,同時能不可逆轉地降低其硬限制。授權程序可以任意改變其軟硬限制。rlim_infinity的 值表示不對資源限制。

用法:include

#include

int getrlimit(int resource, struct rlimit *rlim);

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

引數:resource:可能的選擇有

rlimit_as //程序的最大虛記憶體空間,位元組為單位。

rlimit_core //核心轉存檔案的最大長度。

rlimit_cpu //最大允許的cpu使用時間,秒為單位。當程序達到軟限制,核心將給其傳送sigxcpu訊號,這一訊號的預設行為是終止程序的執行。然而,可以捕捉信 號,處理控制代碼可將控制返回給主程式。如果程序繼續耗費cpu時間,核心會以每秒一次的頻率給其傳送sigxcpu訊號,直到達到硬限制,那時將給程序傳送 sigkill訊號終止其執行。

rlimit_data //程序資料段的最大值。

rlimit_fsize //程序可建立的檔案的最大長度。如果程序試圖超出這一限制時,核心會給其傳送sigxfsz訊號,預設情況下將終止程序的執行。

rlimit_locks //程序可建立的鎖和租賃的最大值。

rlimit_memlock //程序可鎖定在記憶體中的最大資料量,位元組為單位。

rlimit_msgqueue //程序可為posix訊息佇列分配的最大位元組數。

rlimit_nice //程序可通過setpriority() 或 nice()呼叫設定的最大完美值。

rlimit_nofile //指定比程序可開啟的最大檔案描述詞大一的值,超出此值,將會產生emfile錯誤。

注:修改該軟限制值會影響sysconf函式在引數_sc_open_max中到返回值。

rlimit_nproc //使用者可擁有的最大程序數。

注:修改該軟限制值會影響sysconf函式在引數_sc_child_max中到返回值(見下方測試**)。

rlimit_rtprio //程序可通過sched_setscheduler 和 sched_setparam設定的最大實時優先順序。

rlimit_sigpending //使用者可擁有的最大掛起訊號數。

rlimit_stack //最大的程序堆疊,以位元組為單位。

rlim:描述資源軟硬限制的結構體,原型如下

struct rlimit ;

返回說明:

成功執行時,返回0。失敗返回-1,errno被設為以下的某個值

efault:rlim指標指向的空間不可訪問

einval:引數無效

eperm:增加資源限制值時,權能不允許

簡單的測試用例:

#include #include #include #include using namespace std;

int main()

{ #ifdef _sc_child_max

cout << sysconf(_sc_child_max)<< endl;

#endif

struct rlimit b;

#ifdef rlimit_nproc

getrlimit(rlimit_nproc,&b);

cout<

15982

15982:15982

1598

1598:15981

linux程序中常用的全域性資料之環境變數

常見環境變數列表如下 注 該圖 unix環境高階程式設計 一書 可用如下 測試該環境變數是否定義 include include using namespace std int main int argc,char argv char re for int i 1 i sysylh ubuntu c...

sqlserver中常用的全域性變數

變數 transact sql語言中有兩種形式的變數,一種是使用者自己定義的區域性變數,另外一種是系統提供的全域性變數。區域性變數 區域性變數是乙個能夠擁有特定資料型別的物件,它的作用範圍僅限制在程式內部。區域性變數可以作為計數器來計算迴圈執行的次數,或是控制迴圈執行的次數。另外,利用區域性變數還可...

linux中常用的命令

eg man ls 就可以檢視ls相關的用法 注 按q鍵或者ctrl c退出,在linux下可以使用ctrl c終止當前程式執行。2.ls 檢視目錄或者檔案的屬性,列舉出任一目錄下面的檔案 eg ls usr man ls l a.d表示目錄 directory 如果是乙個 表示是檔案,如果是l則表...