欢迎来到天天文库
浏览记录
ID:6127644
大小:40.00 KB
页数:5页
时间:2018-01-04
《linux系统调用--getrlimit()与setrlimit()函数详解》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、功能描述:获取或设定资源使用限制。每种资源都有相关的软硬限制,软限制是内核强加给相应资源的限制值,硬限制是软限制的最大值。非授权调用进程只可以将其软限制指定为0~硬限制范围中的某个值,同时能不可逆转地降低其硬限制。授权进程可以任意改变其软硬限制。RLIM_INFINITY的值表示不对资源限制。用法:#includeintgetrlimit(intresource,structrlimit*rlim);intsetrlimit(intresource,conststructrlimit*rlim);参数:re
2、source:可能的选择有RLIMIT_AS//进程的最大虚内存空间,字节为单位。RLIMIT_CORE//内核转存文件的最大长度。RLIMIT_CPU//最大允许的CPU使用时间,秒为单位。当进程达到软限制,内核将给其发送SIGXCPU信号,这一信号的默认行为是终止进程的执行。然而,可以捕捉信号,处理句柄可将控制返回给主程序。如果进程继续耗费CPU时间,核心会以每秒一次的频率给其发送SIGXCPU信号,直到达到硬限制,那时将给进程发送SIGKILL信号终止其执行。RLIMIT_DATA//进程数据段的最大值。RLIMIT_FSIZE//
3、进程可建立的文件的最大长度。如果进程试图超出这一限制时,核心会给其发送SIGXFSZ信号,默认情况下将终止进程的执行。RLIMIT_LOCKS//进程可建立的锁和租赁的最大值。RLIMIT_MEMLOCK//进程可锁定在内存中的最大数据量,字节为单位。RLIMIT_MSGQUEUE//进程可为POSIX消息队列分配的最大字节数。RLIMIT_NICE//进程可通过setpriority()或nice()调用设置的最大完美值。RLIMIT_NOFILE//指定比进程可打开的最大文件描述词大一的值,超出此值,将会产生EMFILE错误。RLIM
4、IT_NPROC//用户可拥有的最大进程数。RLIMIT_RTPRIO//进程可通过sched_setscheduler和sched_setparam设置的最大实时优先级。RLIMIT_SIGPENDING//用户可拥有的最大挂起信号数。RLIMIT_STACK//最大的进程堆栈,以字节为单位。rlim:描述资源软硬限制的结构体,原型如下structrlimit{ rlim_trlim_cur; rlim_trlim_max;};返回说明:成功执行时,返回0。失败返回-1,errno被设为以下的某个值EFAULT:rlim指针指向的空
5、间不可访问EINVAL:参数无效EPERM:增加资源限制值时,权能不允许 延伸阅读:ulimit和setrlimit轻松修改task进程资源上限值在linux系统中,Resoucelimit指在一个进程的执行过程中,它所能得到的资源的限制,比如进程的corefile的最大值,虚拟内存的最大值等。Resoucelimit的大小可以直接影响进程的执行状况。其有两个最重要的概念:softlimit和hardlimit。structrlimit{ rlim_trlim_cur; //softlimit rlim_trlim_max; //
6、hardlimit};softlimit是指内核所能支持的资源上限。比如对于RLIMIT_NOFILE(一个进程能打开的最大文件数,内核默认是1024),softlimit最大也只能达到1024。对于RLIMIT_CORE(core文件的大小,内核不做限制),softlimit最大能是unlimited。hardlimit在资源中只是作为softlimit的上限。当你设置hardlimit后,你以后设置的softlimit只能小于hardlimit。要说明的是,hardlimit只针对非特权进程,也就是进程的有效用户ID(effectiv
7、euserID)不是0的进程。具有特权级别的进程(具有属性CAP_SYS_RESOURCE),softlimit则只有内核上限。我们可以来看一下下面两条命令的输出。sishen@sishen:~$ulimit-c-n-scorefilesize(blocks,-c)0openfiles(-n)1024stacksize(kbytes,-s)8192sishen@sishen:~$ulimit-c-n-s-Hcorefilesize(blocks,-c)unlimitedopenfiles(-n)1024stacksize(kbytes,-
8、s)unlimited-H表示显示的是hardlimit。从结果上可以看出softlimit和hardlimit的区别。unlimited表示nolimit,即内核的最大值。对于resouce
此文档下载收益归作者所有