亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 操作系統 > 正文

進程環境之getrlimit和setrlimit函數

2024-06-28 13:28:37
字體:
來源:轉載
供稿:網友
進程環境之getrlimit和setrlimit函數

每個進程都有一組資源限制,其中一些可以用getrlimit和setrlimit函數查詢和更改。

#include <sys/resource.h>int getrlimit( int resource, struct rlimit *rlptr );int setrlimit( int resource, const struct rlimit *rlptr );兩個函數返回值:若成功則返回0,若出錯則返回非0值

進程的資源限制通常是在系統初始化時由進程0建立的,然后由每個后續進程繼承。每種實現都可以用自己的方法對各種限制做出調整。

對這兩個函數的每一次調用都會指定一個資源以及一個指向下列結構的指針。

struct rlimit {    rlim_t    rlim_cur;    /* soft limit: current limit */    rlim_t    rlim_max;    /* hard limit: maximum value for rlim_cur */};

在更改資源限制時,須遵循下列三條規則:

(1)任何一個進程都可將一個軟限制值更改為小于或等于其硬限制值。

(2)任何一個進程都可降低其硬限制值,但它必須大于或等于其軟限制值。這種降低對普通用戶而言是不可逆的。

(3)只有超級用戶進程可以提高硬限制值。

常量RLIM_INFINITY指定了一個無限量的限制。

這兩個函數的resource參數取下列值之一:

RLIMIT_AS                進程可用存儲區的最大總長度(字節)。這回影響sbrk函數和mmap函數。

RLIMIT_CORE           core文件的最大字節數,若其值為0則阻止創建core文件。

RLIMIT_CPU             CPU時間的最大量值(秒),當超過此軟限制時,向該進程發送SIGXCPU信號。

RLIMIT_DATA            數據段的最大字節長度。這是初始化數據、非初始化數據以及堆的總和。

RLIMIT_FSIZE           可以創建的文件的最大字節長度。當超過此軟限制時,則向該進程發送SIGXFSZ信號。

RLIMIT_LOCKS          一個進程可持有的文件鎖的最大數(此數也包括linux特有的文件租借數)。

RLIMIT_MEMLOCK     一個進程使用mlock(2)能夠鎖定在存儲器中的最大字節長度。

RLIMIT_NOFILE         每個進程能打開的最大文件數。更改此限制將影響到sysconf函數在參數_SC_OPEN_MAX中的返回值。

RLIMIT_NPROC          每個實際用戶ID可擁有的最大子進程數。更改此限制將影響到sysconf函數在參數_SC_CHILD_MAX中返回的值。

RLIMIT_rss               最大駐內存集的字節長度(resident set size in bytes, RSS)。如果物理存儲器供不應求,則內核將從進程處取回超過RSS的部分。

RLIMIT_SBSIZE          用戶在任一給定時刻可以占用的套接字緩沖區的最大長度(字節)。(Linux 2.4.22不支持)

RLIMIT_STACK           棧的最大字節長度。

RLIMIT_VMEM           這是RLIMIT_AS的同義詞。(Linux 2.4.22不支持)

資源限制影響到調用進程并由其子進程繼承。這就意味著為了影響一個用戶的所有后續進行,需將資源限制的設置構造在shell之中。Bsh、Bash和Ksh具有內置的ulimit命令,Csh具有內置的limit命令。

程序7-8 打印當前資源限制

[root@localhost apue]# cat prog7-8.c#include "apue.h"#if defined(BSD) || defined(MACOS)#include <sys/time.h>#define FMT "%10lld "#else#define FMT "%10ld "#endif#include <sys/resource.h>#define doit(name)      pr_limits(#name, name)static void pr_limits(char *, int);int main(void){#ifdef  RLIMIT_AS        doit(RLIMIT_AS);#endif        doit(RLIMIT_CORE);        doit(RLIMIT_CPU);        doit(RLIMIT_DATA);        doit(RLIMIT_FSIZE);#ifdef  RLIMIT_LOCKS        doit(RLIMIT_LOCKS);#endif#ifdef  RLIMIT_MEMLOCK        doit(RLIMIT_MEMLOCK);#endif        doit(RLIMIT_NOFILE);#ifdef  RLIMIT_NPROC        doit(RLIMIT_NPROC);#endif#ifdef  RLIMIT_RSS        doit(RLIMIT_RSS);#endif#ifdef  RLIMIT_SBSIZE        doit(RLIMIT_SBSIZE);#endif        doit(RLIMIT_STACK);#ifdef  RLIMIT_VMEM        doit(RLIMIT_VMEM#endif        exit(0);}static voidpr_limits(char *name, int resource){        struct rlimit   limit;        if(getrlimit(resource, &limit) < 0)                err_sys("getrlimit error for %s", name);        printf("%-14s ", name);        if(limit.rlim_cur == RLIM_INFINITY)                printf("(infinite) ");        else                printf(FMT, limit.rlim_cur);        if(limit.rlim_max == RLIM_INFINITY)                printf("(infinite) ");        else                printf(FMT, limit.rlim_max);        putchar((int)'/n');}

注意,在doit宏中使用了(也只能在宏中使用)ISO C的字符串創建運算符(#),以便為每個資源名產生字符串值。例如:

doit(RLIMIT_CORE);

這將由C預處理器擴展為:

pr_limits(“RLIMIT_CORE”, RLIMIT_CORE);

在Linux下運行此程序,得到:

[root@localhost apue]# ./prog7-8RLIMIT_AS      (infinite) (infinite) RLIMIT_CORE             0 (infinite) RLIMIT_CPU     (infinite) (infinite) RLIMIT_DATA    (infinite) (infinite) RLIMIT_FSIZE   (infinite) (infinite) RLIMIT_LOCKS   (infinite) (infinite) RLIMIT_MEMLOCK      32768      32768 RLIMIT_NOFILE        1024       1024 RLIMIT_NPROC         8192       8192 RLIMIT_RSS     (infinite) (infinite) RLIMIT_STACK     10485760 (infinite)

本篇博文內容摘自《UNIX環境高級編程》(第二版),僅作個人學習記錄所用。關于本書可參考:http://www.apuebook.com/。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产91免费看片| 九九热99久久久国产盗摄| 免费91麻豆精品国产自产在线观看| 国产精品com| 亚洲国产精品成人va在线观看| 欧美性猛交xxxx偷拍洗澡| 国产精品第三页| 欧美午夜xxx| 欧美国产日韩免费| 美女视频黄免费的亚洲男人天堂| 插插插亚洲综合网| 91成人天堂久久成人| 爽爽爽爽爽爽爽成人免费观看| 琪琪第一精品导航| 国产suv精品一区二区三区88区| 日本精品久久中文字幕佐佐木| 中文一区二区视频| 97免费中文视频在线观看| 精品国产一区二区三区久久久| www.日韩视频| 国产一区二区欧美日韩| 国产精品99久久久久久久久| 国产va免费精品高清在线观看| 68精品久久久久久欧美| 日韩禁在线播放| 亚洲国产一区二区三区四区| 久久久久这里只有精品| 国产精品96久久久久久又黄又硬| 在线观看亚洲区| 青青在线视频一区二区三区| 国产精品电影网| 精品久久久中文| 91久久综合亚洲鲁鲁五月天| 国产视频在线观看一区二区| 97久久伊人激情网| 日本精品va在线观看| 欧美精品中文字幕一区| 久久久噜噜噜久久| 国产一区二区精品丝袜| 欧美乱妇高清无乱码| 成人欧美在线视频| 中文欧美日本在线资源| 国产欧美精品日韩精品| 日本韩国欧美精品大片卡二| 成人在线一区二区| 日韩在线观看av| 国产欧美日韩91| 国产97在线亚洲| 国产日产亚洲精品| 日韩在线视频观看正片免费网站| 97免费在线视频| 九色精品美女在线| 中文字幕少妇一区二区三区| 国产精品免费视频久久久| 美女国内精品自产拍在线播放| 一区二区三区四区在线观看视频| 国产精品免费看久久久香蕉| 日韩精品视频免费| 国产精品综合久久久| 亚洲欧美日韩另类| 国产精品久久久久久久午夜| 91精品国产91久久久久福利| 欧美特黄级在线| 国产亚洲视频中文字幕视频| 亚洲香蕉伊综合在人在线视看| 全球成人中文在线| 亚洲自拍偷拍福利| 日韩av在线免费观看一区| 欧美老女人bb| 欧美精品videosex牲欧美| 成人免费大片黄在线播放| 欧美日韩xxx| 亚洲图片欧美日产| 国内精品视频久久| 成人免费在线网址| 伊人久久久久久久久久| 精品久久久久久久久久久久久久| 亚洲欧美综合精品久久成人| 美女国内精品自产拍在线播放| 亚洲欧美日韩在线高清直播| 欧美电影免费观看大全| 中文字幕亚洲无线码a| 国产精品极品美女粉嫩高清在线| 国产精品网站大全| 国产亚洲人成网站在线观看| 欧美日韩中文字幕| 51色欧美片视频在线观看| 色偷偷偷综合中文字幕;dd| 成人春色激情网| 亚洲精品成人久久| 国产一区二区在线免费| 日本精品视频在线播放| 日韩av手机在线| 欧美大学生性色视频| 超碰日本道色综合久久综合| 久久久久久亚洲| 日本精品久久中文字幕佐佐木| 欧美一级bbbbb性bbbb喷潮片| 国产精品欧美在线| 韩国欧美亚洲国产| 韩国精品美女www爽爽爽视频| 永久免费精品影视网站| 国产成人精品一区二区三区| 亚洲色图激情小说| 日韩免费av片在线观看| 成人免费大片黄在线播放| 日韩在线观看av| 日韩视频中文字幕| 亚洲精品大尺度| 亚洲第一福利视频| 亚洲人成伊人成综合网久久久| 亚洲成色777777女色窝| 97av视频在线| 98精品国产自产在线观看| 欧美野外wwwxxx| 色综合影院在线| 色妞在线综合亚洲欧美| 国产视频亚洲视频| 久久久久久久久中文字幕| 国产精品91免费在线| 国产精品久久久久不卡| 91九色视频导航| 日韩欧美国产黄色| 国产97免费视| 91在线高清视频| 欧美日韩一区二区在线播放| 精品国产欧美一区二区三区成人| 亚洲精品一区二区三区婷婷月| 国产精品成人品| 91黑丝在线观看| 中文字幕av一区二区三区谷原希美| 国产欧美亚洲精品| 欧美中文字幕视频| 中文字幕久热精品在线视频| 大桥未久av一区二区三区| 91免费观看网站| 久久国产精品影视| 国产精品video| 欧美亚洲第一页| 日韩av免费观影| 国产精品美女www爽爽爽视频| 日韩av高清不卡| 久久九九免费视频| 国产精品一区av| 4438全国亚洲精品在线观看视频| 久久久中精品2020中文| x99av成人免费| 午夜精品一区二区三区在线| 亚洲天堂网站在线观看视频| 欧美激情综合亚洲一二区| 久久成人在线视频| 亚洲91精品在线| 亚洲人成在线免费观看| 久久亚洲精品毛片| 亚洲成人黄色在线| 日韩在线观看精品| 成人国产在线激情| 亚洲色图50p| 亚洲精品一区二区三区不| 清纯唯美日韩制服另类| 国产精品网站入口| 久久久久久亚洲精品不卡| 日韩av免费在线观看| 亚洲成人黄色在线|