点击(此处)折叠或打开
- #include <unistd.h>
- long sysconf(int name);
- /*returns value of limit specified by name, or -1 if limit is indeterminate or an error occurred*/
点击(此处)折叠或打开
- #include <unistd.h>
- long pathconf(const char *pathname, int name);
- long fpathconf(int fd, int name);
- /*both return value of limit specified by name, or -1 if limit is indeterminate or an error occurred*/
有时系统实现并未将一些系统限制定义为限制常量(如PATH_MAX),并且sysconf(), pathconf()在返回相应限制时会将其归为不确定,对此,可以采用如下策略之一:
- 当编写一个可以在多个unix实现之间一直的应用程序时,选择使用susv3所规定的最低限制值。
- 在某些情况下,切实可行的解决方法是省去对限制的检查,取而代之以指向相关的系统调用或库函数。如果调用失败,且errno表名出错时由于超出了系统限制时,那么可以根据需要调整应用的行为,并再次尝试调用
- 自行编写程序或函数,以推断或估算限制值
- 可以利用GNU Autoconf之类的扩展工具
4. 系统选项
通过在文件中定义相应常量,UNIX实现能够在编译时通告其对特定SUSv3选项的支持。此类常量的命名均会冠以前缀(_POSIX_或者_XOPEN_),以标识其源于何种标准。
各个选项常量,一经定义,其值必为下列之一:
- -1, 表示实现不支持该选项
- 0,表示实现可能支持该选项,需要靠sysconf()或pathconf()
- >0,表示其支持该选项
获取与进程有关的信息:/proc/PID
每个/proc/PID目录中都存在一个命名为status的文件夹,提供了有关该进程的一系列信息:
文件 | 描述(进程属性) |
cmdline | 以\0分割的命令行参数 |
cwd | 指向当前工作目录的符号链接 |
environ | name->value键值对环境列表,、\0分割 |
exe | 指向正在执行文件的符号链接 |
fd | 文件目录,包含了指向由进程打开文件的符号链接 |
maps | 内存映射 |
mem | 进程虚拟内存 |
mounts | 进程的安装点 |
root | 指向根目录的符号链接 |
status | 各种信息(如进程id、凭证、内存使用量、信号) |
task | 为进程中的每一个线程均包含一个子目录 |
/proc目录下的各种文件和子目录,提供了对系统级信息的访问,一般用途如下,其中方框表示目录,圆角矩形表示文件: