Chinaunix首页 | 论坛 | 博客
  • 博客访问: 441173
  • 博文数量: 113
  • 博客积分: 446
  • 博客等级: 下士
  • 技术积分: 1229
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-09 16:01
个人简介

Let's go!!!!!

文章分类

全部博文(113)

文章存档

2019年(5)

2018年(4)

2017年(9)

2016年(5)

2015年(39)

2014年(6)

2013年(28)

2012年(17)

分类: LINUX

2012-12-11 19:53:54

    每一个系统对资源分配和使用不是随意的,都有限制。如对登录名的最大长度,系统存储页长度,每个实际用户ID的最大进程数等的限制。
可也用以下三个函数来查看这些限制。
long sysconf(int name)  对系统资源限制进行查看
long pathcongf(char *pathname,int name)  对一个文件资源限制进行查看,pathname为一个文件路径
long fpathconf(int fd,int name)          对一个打开的文件的资源限制进行查看,fd为一个文件描述符
具体限制参数(name)请看 APUE P33

#include
#include

int main()

{

long max;

max=sysconf(_SC_CHILD_MAX);

printf("HILD_MAX=%ld\n",max);

 

max=sysconf(_SC_LINE_MAX);

printf("LINE_MAX=%ld\n",max);

return 0;

}

结果:
HILD_MAX=1024
LINE_MAX=2048


#include

#include

int main()

{

long max;

max=pathconf("/etc/passwd",_PC_LINK_MAX);

printf("LINK_MAX=%ld\n",max);

 

max=pathconf("/etc/passwd",_PC_MAX_CANON);

printf("MAX_CANON=%ld\n",max);

return 0;
}

 

   同样,对于每一个进程都有一组资源限制,其中一些可以用getrlimit和setrlimit查询和更改。
int getrlimit(int resource,struct rlimit *ptr)
int setrlimit(int resource,struct rlimit *prt)

struct rlimit{
rlim_t rlim_cur;  //soft limit
rlim_t rlim_max;  //hard limit
};
资源限制:RLIMIT_NOFILE,这是对每个进程能打开的最大文件数进行限制。
具体还哪些资源限制有那些请看APUE P165

#include
#include
#include
#include
#include
#include
#include
int main(void)
 {
 struct rlimit r;
 if(getrlimit(RLIMIT_NOFILE,&r)<0)
 {
 perror("getrlimit error");
 exit(1);
 }
 printf("RLIMIT_NOFILE cur:%d\n",r.rlim_cur);
 printf("RLIMIT_NOFILE max:%d\n",r.rlim_max);
 

 r.rlim_cur=100;
 r.rlim_max=200;
 if (setrlimit(RLIMIT_NOFILE,&r)<0)
 {
 fprintf(stderr,"setrlimit error\n");
 exit(1);
 }
 
 if(getrlimit(RLIMIT_NOFILE,&r)<0)
 {
 fprintf(stderr,"getrlimit error\n");
 exit(1);
 }
 printf("RLIMIT_NOFILE cur:%d\n",r.rlim_cur);
 printf("RLIMIT_NOFILE max:%d\n",r.rlim_max);
 return 0;
 }
 

 

 

阅读(1918) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~