系统限制和选项limit(一)

从shell中获取系统限制和选项
终端输入getconf value [pathname]

[root@bogon code]# getconf ARG_MAX  
2097152
[root@bogon code]# getconf NAME_MAX /root   //涉及路径名的在后面都要带一个路径,随便一个路径都可以
255 //最大路径名称长度

在程序运行时获取限制和选项
来看一下sysconf函数的参数
系统限制和选项limit(一)_系统限制

[root@bogon code]# cat getlimit.c 
#include<stdio.h>
#include<unistd.h>
#include<limits.h>
int main()
{
    long id=sysconf(_SC_ARG_MAX);//sysconf里面的值应该是_SC系列常量之一,其它的好像不行,例如换成ARG_MAX就不行,失败返回-1,好吧,我又懒得检查是否调用成功了
    printf("%ld\n",id);
    return 0;
}
[root@bogon code]# gcc getlimit.c 
[root@bogon code]# ./a.out
2097152
[root@bogon code]# 

程序运行时获取与文件相关的限制
先看一下pathconf和fpathconf的参数
系统限制和选项limit(一)_系统限制_02

[root@bogon code]# cat filelimit.c 
#include<stdio.h>
#include<fcntl.h>
#include<unistd.h>
int main()
{
    int fd=open("/root/code/a.c",O_RDWR);
    long len=fpathconf(fd,_PC_NAME_MAX);
    long namelen=pathconf("/root",_PC_NAME_MAX);
    long pathlen=pathconf("/root",_PC_PATH_MAX);
    long pipelen=pathconf("/root",_PC_PIPE_BUF);
    printf("%ld\n%ld\n%ld\n%ld\n",len,namelen,pathlen,pipelen);
    return 0;
}
[root@bogon code]# gcc filelimit.c 
[root@bogon code]# ./a.out
255
255
4096
4096
[root@bogon code]#