Linux环境资源限制例程

 1 #include <sys/types.h>
 2 #include <sys/resource.h>
 3 #include <sys/time.h>
 4 #include <unistd.h>
 5 #include <stdio.h>
 6 #include <math.h>
 7
 8 void work()
 9 {
10     FILE *f;
11     int i;
12     double x=4.5;
13     f=tmpfile();
14     for(i=0;i<10000;i++);
15     {
16         fprintf(f,"Do some output\n");//将一个字符串写入临时文件10000
17         if(ferror(f))
18         {
19             fprintf(stderr,"Error writing to temporary file\n");
20             exit(1);
21         }
22     }//完成
23     for (i=0;i<1000000;i++)
24         x=log(x*x+3.21);//做一些算术运算
25 }
26
27 int main()
28 {
29     struct rusage r_usage;
30     struct rlimit r_limit;
31     int priority;
32
33     work();
34     getrusage(RUSAGE_SELF, &r_usage);//第一个参数代表仅返回当前程序的使用信息,保存在第二个参数中
35
36     printf("CPU usage: User=%ld.%06ld,System=%ld.%06ld\n",
37     r_usage.ru_utime.tv_sec,r_usage.ru_utime.tv_usec,
38     r_usage.ru_stime.tv_sec,r_usage.ru_stime.tv_usec);//打印出cpu消耗
39
40     priority=getpriority(PRIO_PROCESS, getpid());
41     printf("Current priority = %d\n", priority);//获取当前优先级
42
43     getrlimit(RLIMIT_FSIZE,&r_limit);//获取当前文件限制
44     printf("Current FSIZE limit: soft=%ld, hard=%ld\n",r_limit.rlim_cur,r_limit.rlim_max);
45
46     r_limit.rlim_cur=2048;
47     r_limit.rlim_max=4096;
48     printf("Setting a 2k file size limit\n");
49     setrlimit(RLIMIT_FSIZE,&r_limit);
50
51     work();
52     exit(0);
53 }

运行效果

 1 [email protected]:~/c_program$ ./limits
 2 CPU usage: User=0.056000,System=0.000000
 3 Current priority = 0
 4 Current FSIZE limit: soft=-1, hard=-1
 5 Setting a 2k file size limit
 6 [email protected]:~/c_program$ ulimit
 7 unlimited
 8 [email protected]:~/c_program$ nice ./limits
 9 CPU usage: User=0.060000,System=0.000000
10 Current priority = 10
11 Current FSIZE limit: soft=-1, hard=-1
12 Setting a 2k file size limit
时间: 2024-08-05 13:40:57

Linux环境资源限制例程的相关文章

(转)嵌入式linux与ARM开发板的入门建议

第一,学习基本的单片机编程. 对于学硬件的人而言,必须先对硬件的基本使用方法有感性的认识,更必须深刻认识该硬件的控制方式,如果一开始就学linux系统.学移植那么只会马上就陷入一个很深的漩涡.我在刚刚开始学ARM的时候是选择ARM7(主要是当时ARM9还很贵),学ARM7的时候还是保持着学51单片机的思维,使用ADS 去编程,第一个实验就是控制 led.学过一段时间ARM的人都会笑这样很笨,实际上也不是,我倒是觉得有这个过程会好很多,因为无论做多复杂的系统最终都会落实到这些最底层的硬件控制,因此

从学习到工作,杰出电子工程师的养成日记

相信看到这篇文章的都是电子工程师,或者即将步入电子这个行业的未来工程师,很多人会问这样那样的问题,例如我怎样才能做一个电子工程师,怎样去应聘一个电子工程师,需要什么技能,如果做得不开心了我想转行的话可不可以,改怎么做啊?下面我们整理一些工程师的看法,让大家对工程师的轨迹有一定的了解,首先要讲述的是电子工程师怎样成长. 怎样成为一个出色电子工程师 先说课本,做电子工程师的话数学跟英语,必备技能.前者保证你理论过关,我是学自动化的,我们专业有这么一句话"大一高数没学好,一路兵败如山倒":后

ARM与嵌入式入门的建议(转)

转载:不知道这是哪位大神写的学习嵌入式的经验 转载出来供自己以后借鉴 感谢原作者 ARM与嵌入式入门的建议 由于很多人总问这个问题,所以这里做一个总结文档供大家参考.这里必须先说明,以下的步骤都是针对Linux系统的,并不面向WinCE.也许你会注意到,现在做嵌入式的人中,做linux研究的人远比做WinCE的人多,很多产家提供的资料也是以linux为主.我一直很难理解,其实WinCE的界面比linux的界面好看多了,使用起来也很方便,更为重要的是,WinCE的开发和Windows下的开发基本一

(转)linux下和云端通讯的例程, ubuntu和openwrt实验成功(一)

一.  HTTP请求的数据流总结#上传数据, yeelink的数据流如下POST /v1.0/device/4420/sensor/9089/datapoints HTTP/1.1Host: api.yeelink.netU-ApiKey: 729d1ba15b26b6a48f4807ef3f2f4df4Content-Length: 49Content-Type: application/x-www-form-urlencodedConnection: Close {"timestamp&qu

linux 高级字符设备驱动 ioctl操作介绍 例程分析实现【转】

转自:http://my.oschina.net/u/274829/blog/285014 1,ioctl介绍 ioctl控制设备读写数据以及关闭等. 用户空间函数原型:int ioctl(int fd,unsinged long cmd,...) fd-文件描述符 cmd-对设备的发出的控制命令 ...表示这是一个可选的参数,存在与否依赖于cmd,如cmd为修改波特率,那么....就表示波特率的值.如果cmd表示关闭,则不需要参数 内核函数原型 file_operations结构体里面long

(转)linux下和云端通讯的例程, ubuntu和openwrt下实验成功(二)

前言: 上节用纯linux的函数实现了和云端通讯, 本节开始利用传说中的神器libcurl 话说一个网络程序员对书法十分感兴趣,退休后决定在这方面有所建树. 于是花重金购买了上等的文房四宝.    一日,饭后突生雅兴,一番磨墨拟纸,  并点上了上好的檀香,颇有王羲之风范,  又具颜真卿气势,定神片刻,泼墨挥毫,    郑重地写下一行字:libcurl. 由此可知libcurl的刻骨铭心! 官方文档请参考这里 http://curl.haxx.se/libcurl/c/curl_easy_seto

Linux下用c语言实现发送http请求 方式可以Get或者Post例程参考

[1].[代码] Linux下用c语言实现发送http请求 方式可以Get或者Post 跳至 [1] ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69

linux 简单的DMA例程

一个简单的使用DMA 例子 示例:下面是一个简单的使用DMA进行传输的驱动程序,它是一个假想的设备,只列出DMA相关的部分来说明驱动程序中如何使用DMA的. 函数dad_transfer是设置DMA对内存buffer的传输操作函数,它使用流式映射将buffer的虚拟地址转换到物理地址,设置好DMA控制器,然后开始传输数据. int dad_transfer(struct dad_dev *dev, int write, void *buffer,                 size_t c

linux下,pipe的容量的讨论与查看

1.pipe的容量 2.6标准版本的linux内核,pipe缓冲区是64KB,尽管命令ulimit -a看到管道大小8块,缓冲区的大小不是4 k,因为内核动态分配最大16"缓冲条目",乘64 k.这些限制是硬编码的 2.如何查看自己pc上的pipe多大 1)通过ulimit -a查看到 pipe size 一次原子写入为:512Bytes*8=4096Bytes 查看缓冲条目个数:cat /usr/src/kernels/3.10.0-327.el7.x86_64/include/li