sysconf、pathconf和fpathconf
精选
转载
sysconf、pathconf和fpathconf
开始学习《unix环境高级编程》了。遇到的第一个难题就是这几个函数,还好总算是搞懂了。 3个函数的原型: #include <unistd.h> long sysconf(int name); long pathconf(const char *pathname, int name); long fpathname(int filedes, int name); 所有函数返回值:若成功则返回相应值;若出错则返回-1.
|
这三个函数是用来求一些限制的,unix中有以下三种限制: (1)编译时限制(头文件) (2)不与文件或目录相关联的运行时限制(sysconf函数) (3)与文件或目录相关联的运行时限制(pathconf函数和fpahtconf函数) 我的理解:有些限制是已经确定好了,在头文件中,不会改变了;另外一些是不确定的,没有在头文件中给出定义,只能通过这三个函数,来确定其运行时的值。 一个简单使用这些函数的小程序: #include<stdio.h> #include<errno.h> #include<limits.h> //把它注释掉好像也对 #include<unistd.h>
int main(int argc, char *argv[]) { #ifdef ARG_MAX printf("ARG_MAX defined to be %d\n",ARG_MAX); #else printf("no symbol for ARG_MAX.\n"); #endif long int arg_max=0; arg_max = sysconf(_SC_ARG_MAX); if(arg_max < 0) { if(errno != 0) { if(errno == EINVAL) printf("name not valid.\n"); else printf("sysconf error.\n"); } else { printf("no limit.\n"); } } else { printf("clock %ld\n",arg_max); }
//这一句只是使用一下pathconf函数,必须像上面一样使用一些判断语句,这里偷懒了。 printf("LINK_MAX: %ld\n", pathconf("/home",_PC_LINK_MAX));
return 0; }
转载于:http://blog.sina.com.cn/s/blog_6b8397010100psyb.html
|
理解的也不是很深,还有一些模糊的地方,需要以后仔细研究。 |
|
|