尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
进程环境之getrlimit和setrlimit函数
每个进程都有一组资源限制其中一些可以用getrlimit和setrlimit函数查询和更改。#include sys/resource.hintgetrlimit(intresource,structrlimit *rlptr );intsetrlimit(intresource,conststructrlimit *rlptr ); 两个函数返回值若成功则返回0若出错则返回非0值进程的资源限制通常是在系统初始化时由进程0建立的然后由每个后续进程继承。每种实现都可以用自己的方法对各种限制做出调整。对这两个函数的每一次调用都会指定一个资源以及一个指向下列结构的指针。structrlimit { 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 一个进程使用mlock2能够锁定在存储器中的最大字节长度。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 打印当前资源限制[rootlocalhost apue]# cat prog7-8.c #includeapue.h#ifdefined(BSD) || defined(MACOS)#includesys/time.h#defineFMT %10lld #else#defineFMT %10ld #endif#includesys/resource.h#definedoit(name) pr_limits(#name, name)staticvoidpr_limits(char*,int);intmain(void) { #ifdef RLIMIT_AS doit(RLIMIT_AS);#endifdoit(RLIMIT_CORE); doit(RLIMIT_CPU); doit(RLIMIT_DATA); doit(RLIMIT_FSIZE); #ifdef RLIMIT_LOCKS doit(RLIMIT_LOCKS);#endif#ifdef RLIMIT_MEMLOCK doit(RLIMIT_MEMLOCK);#endifdoit(RLIMIT_NOFILE); #ifdef RLIMIT_NPROC doit(RLIMIT_NPROC);#endif#ifdef RLIMIT_RSS doit(RLIMIT_RSS);#endif#ifdef RLIMIT_SBSIZE doit(RLIMIT_SBSIZE);#endifdoit(RLIMIT_STACK); #ifdef RLIMIT_VMEM doit(RLIMIT_VMEM#endifexit(0); }staticvoidpr_limits(char*name,intresource) {structrlimit limit;if(getrlimit(resource, limit) 0) err_sys(getrlimit error for %s, name); printf(%-14s, name);if(limit.rlim_cur RLIM_INFINITY) printf((infinite));elseprintf(FMT, limit.rlim_cur);if(limit.rlim_max RLIM_INFINITY) printf((infinite));elseprintf(FMT, limit.rlim_max); putchar((int)\n); }注意在doit宏中使用了也只能在宏中使用ISO C的字符串创建运算符#以便为每个资源名产生字符串值。例如doitRLIMIT_CORE这将由C预处理器扩展为pr_limits“RLIMIT_CORE” RLIMIT_CORE在Linux下运行此程序得到[rootlocalhost apue]# ./prog7-8RLIMIT_AS (infinite) (infinite) RLIMIT_CORE0(infinite) RLIMIT_CPU (infinite) (infinite) RLIMIT_DATA (infinite) (infinite) RLIMIT_FSIZE (infinite) (infinite) RLIMIT_LOCKS (infinite) (infinite) RLIMIT_MEMLOCK3276832768RLIMIT_NOFILE10241024RLIMIT_NPROC81928192RLIMIT_RSS (infinite) (infinite) RLIMIT_STACK10485760(infinite)本篇博文内容摘自《UNIX环境高级编程》第二版仅作个人学习记录所用。关于本书可参考APUE。
RELATED

相关推荐

仪表读数识别:从图像倾斜矫正到指针提取的完整方案

仪表读数识别:从图像倾斜矫正到指针提取的完整方案

简介:一份面向工业自动化仪表读数场景的完整技术包,解决拍摄角度或设备震动引起的图像倾斜、导致指针读数难以准确判断的问题。内容聚焦透视变换与霍夫变换矫正、Canny边缘检测、阈值分割以及卷积神经网络读数识别等关键算法,并兼顾实时性能优…

📅 2026/10/4 19:13:20
黑烟车自动识别毕设实战:从双阶段检测到部署避坑全指南

黑烟车自动识别毕设实战:从双阶段检测到部署避坑全指南

简介:面向高校计算机视觉方向毕业设计的完整项目资料,聚焦基于深度学习的黑烟车自动识别系统,适用于智能交通监管与环境保护场景。项目从自建黑烟车标注数据集出发,结合图像增广、ResNet骨架深度网络、迁移学习与参数调优等完整技…

📅 2026/10/4 19:13:20
设计行业案例:群晖 NAS 存储池损毁,卷结构重建恢复全部源文件【东方护航数据恢复深圳店】

设计行业案例:群晖 NAS 存储池损毁,卷结构重建恢复全部源文件【东方护航数据恢复深圳店】

一、故障现象某建筑设计公司有一台用了 5 年的群晖 8 盘 NAS,里面存着从创业至今的全部源文件——PSD、AI、CAD 图纸、SketchUp 与 3D 模型,共 6.5TB。一次写字楼停电又来电之后,NAS 管理界面弹出「存储池已损毁」,所有共享文件夹…

📅 2026/10/4 19:13:20
MORE NEWS

更多资讯

📰

从Chat Completions到Responses:OpenAI接口演进与迁移实战

从去年开始帮几个团队做AI应用落地,大家问得最多的问题越来越集中:OpenAI的接口到底换成Responses了没有?我之前接的Chat Completions代码会不会报废?为什么开源框架里翻来覆去还是推荐chat/completions?说实话&#x…

📰

如何从0到1设计一个系统?照着Awesome Architecture的8步方法论做就能落地

如何从0到1设计一个系统?照着Awesome Architecture的8步方法论做就能落地 【免费下载链接】awesome-architecture 🧭 Architecture-first system design: 26 bilingual tutorials, 25 architecture templates, and 6 end-to-end cases covering distribu…

📰

NPC 长期回忆的语义向量检索:端侧轻量 HNSW 索引与余弦相似度优化

NPC 长期回忆的语义向量检索:端侧轻量 HNSW 索引与余弦相似度优化给游戏里的 NPC 接入长期记忆,最怕的就是把记忆检索变成卡顿的源头。 很多原型 Demo 阶段的做法简单粗暴:把几百条 NPC 的生平经历和过往对话先通过端侧 Embedding 模型转化为…

📰

SAP项目结算Cost-based POC:完工百分比计算与配置全解析

做SAP项目集成的这些年,带过的项目里几乎每个月结都会遇到有人卡在“项目的完工百分比结算”上。尤其是 Cost-based POC,很多人听过名字,却说不清楚它的计算逻辑和配置链路。这次我把这块内容完完整整拆一遍,以项目为例&#xff0…

📰

移动端 GPU TBDR 架构深度剖析:为什么你的后处理 Blit 会引发严重发热

移动端 GPU TBDR 架构深度剖析:为什么你的后处理 Blit 会引发严重发热在游戏跨平台移植的过程中,几乎所有的 PC 引擎团队都会在移动端栽同一个大跟头。 在桌面级独显(如 RTX 4080)上,为了实现炫目的电影级画质&#xf…

📰

插件加载失败的背后:从 failed to load plugins 到插件系统设计

说实话,我最初看到“plugins”这个词的时候,第一反应是“这也太宽泛了”。但结合最近搜索引擎里集中出现的那几组热词——IAR plugins 是干什么的、failed to load plugins web boot、MusicFree plugins——我大概明白了。这个标题背后藏着的不是一个具体…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬