sysconf、pathconf和fpathconf函数

本文详细解释了Unix系统中的编译时和运行时限制,包括如何通过头文件和sysconf、pathconf、fpathconf函数来获取这些限制。介绍了不同函数原型的区别及其返回值的含义,帮助开发者更好地理解和利用Unix系统提供的资源限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.限制
Unix系统实现定义了很多幻数和常量,这些在不同程度上依从POSIX,也遵从POSIX.1标准。这就有助于软件的可移植性。

以下两种类型的限制是必须的:

1) 编译时限制(例如,短整型的最大值是什么?)

2) 运行时限制(例如,文件名可以有多少个字符?)

编译时限制可在头文件中定义,程序在编译时可以包含头文件。但是,运行时限制则要求进程调用一个函数以获取此种限制值。

为了解决此类问题:

1) 编译时限制(例如,短整型的最大值是什么?)

2) 不与文件或目录相关联的运行时限制(sysconf函数)

3) 与文件或目录相关联的运行时限制(pathconf和fpathconf函数)

 

2. 函数原型
#include<unistd.h>

long sysconf(int name);

long pathconf(const char *pathname, intname);

long fpathconf(int filedes, int name);

后两个函数之间的区别是:一个用路径名作为参数,另一个则取文件描述符作为参数。

返回值:

(1)如果 name 不是一个合适的常量,则所有三个函数都会返回-1,并将 errno 设置为EINVAL。

(2)有些 name可以返回变量的值(返回值>=0),或者返回-1,这表示该值是不确定的,此时不改变 errno的值。

因此,程序要检查错误,应该在调用 sysconf() 之前将 errno 设置为 0 ,然后如果返回-1,则检验到错误。



thanks :   http://blog.sina.com.cn/s/blog_590be5290100ncty.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值