setrlimit函式限制程序資源

227569hy發表於2024-04-03

setrlimit

設定引數滿足

struct rlimit{
    rlim_t rlim_cur; // 軟限制
    rlim_t rlim_max; // 硬限制
}

image

可以設定的引數:

  • RLIMIT_AS:程序總的可用的儲存空間的大小。此外,自動堆疊擴充套件也將失敗(並生成一個SIGSEGV,當沒有備用堆疊可用時,它會終止程序)
  • RLIMIT_CORE:核心檔案的最大大小。當0時,不會建立任何核心轉儲檔案。當非零時,較大的轉儲將被截斷到此大小。
  • RLIMIT_CPU:CPU時間的最大值(秒),當超過此軟限制時,向該程序傳送SIGXCPU訊號。
  • RLIMIT_DATA:資料段的最大位元組長度。當程序透過brk()或sbrk()函式試圖擴大其資料段至超過軟限制時,這些函式呼叫將失敗並返回ENOMEM錯誤。
  • RLIMIT_FSIZE:可以建立的檔案的最大位元組長度。當超過此軟限制時,則向該程序傳送SIGXFSZ訊號。
  • RLIMIT_LOCKS:一個程序可持有的檔案鎖的最大數。
  • RLIMIT_MEMLOCK:一個程序使用mlock能夠鎖定在儲存器中的最大位元組長度。
  • RLIMIT_NOFILE:每個程序能開啟最大檔案數。更改此限制將影響到sysconf函式在引數_SC_OPEN_MAX返回的值。
  • RLIMIT_NPROC:每個實際使用者ID可擁有的最大子程序數。更改此限制將影響到sysconf函式在引數_SC_CHILD_MAX返回的值。
  • RLIMIT_RSS:最大駐記憶體集的位元組長度。(resident set size in bytes,RSS)
  • RLIMIT_SBSIZE:使用者在任一給定時刻可以佔用的套接字緩衝區的最大長度。
  • RLIMIT_STACK:棧的最大位元組長度。在達到該極限時,產生SIGSEGV訊號。
  • RLIMIT_SWAP:使用者可以使用最大的交換空間的大小
  • RLIMIT_NICE:nice值設定的最大限制

補充

RLIMIT_CPU是限制cpu使用時間,不是cpu佔用率,是限制CPU使用時間為多少秒以內。

相關文章