1. 限制
1.1 简介
计算机系统由硬件和软件(包含操作系统)两大部分组成,系统能够正常并且稳定地运行既受制于底层硬件资源的限制,比如内存大小,IO数量,总线宽度,CPU主率等,又受制于系统具体实现的限制,比如文件路径和文件名的长度,进程能够打开的最大文件描述符个数,函数栈大小等。很多限制能够在编译或运行时获取,在具有特权用户及硬件资源满足的情况下,有一些限制可以通过命令或函数来改变。
两种类型的限制:
(1) 编译时限制,可在头文件中定义
(2)运行时限制,有两个函数可以取得运行时限制
与文件或目录无关的运行时限制:sysconf
与文件和目录有关的运行时限制:pathconf和fpathconf
1.2 函数原型
#include <unistd.h>
long sysconf(int name);
long pathconf(const char *pathname, int name);
long fpathconf(int fd, int name);
以_SC_开头的常量用作sysconf函数的name参数,以_PC_开头的常量用作pathconf和fpathconf函数的name参数。pathname可以是一个目录或文件,fd是一个打开的文件描述符(文件或目录)。三个函数若成功则返回相应的值,若失败则返回-1。使用pathconf和fpathconf对pathname和fd有很多限制,如果不满足则返回一个未定义的值。
1.3 实例
#include <stdio.h>
#include <errno.h>
#include <limits.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/pa