Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1011837
  • 博文数量: 135
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1785
  • 用 户 组: 普通用户
  • 注册时间: 2016-12-21 22:26
个人简介

90后空巢老码农

文章分类

全部博文(135)

文章存档

2020年(33)

2019年(54)

2018年(47)

2017年(1)

我的朋友

分类: LINUX

2020-02-09 23:32:39

1. 在运行时获取系统限制:

点击(此处)折叠或打开

  1. #include <unistd.h>
  2. long sysconf(int name);
  3. /*returns value of limit specified by name, or -1 if limit is indeterminate or an error occurred*/
2. 运行时获取与文件相关的限制:

点击(此处)折叠或打开

  1. #include <unistd.h>
  2. long pathconf(const char *pathname, int name);
  3. long fpathconf(int fd, int name);
  4. /*both return value of limit specified by name, or -1 if limit is indeterminate or an error occurred*/
3. 不确定限制

有时系统实现并未将一些系统限制定义为限制常量(如PATH_MAX),并且sysconf(), pathconf()在返回相应限制时会将其归为不确定,对此,可以采用如下策略之一:
  • 当编写一个可以在多个unix实现之间一直的应用程序时,选择使用susv3所规定的最低限制值。
  • 在某些情况下,切实可行的解决方法是省去对限制的检查,取而代之以指向相关的系统调用或库函数。如果调用失败,且errno表名出错时由于超出了系统限制时,那么可以根据需要调整应用的行为,并再次尝试调用
  • 自行编写程序或函数,以推断或估算限制值
  • 可以利用GNU Autoconf之类的扩展工具


4. 系统选项
通过在文件中定义相应常量,UNIX实现能够在编译时通告其对特定SUSv3选项的支持。此类常量的命名均会冠以前缀(_POSIX_或者_XOPEN_),以标识其源于何种标准。
各个选项常量,一经定义,其值必为下列之一:
  • -1, 表示实现不支持该选项
  • 0,表示实现可能支持该选项,需要靠sysconf()或pathconf()
  • >0,表示其支持该选项
5. /proc 文件系统

获取与进程有关的信息:/proc/PID
每个/proc/PID目录中都存在一个命名为status的文件夹,提供了有关该进程的一系列信息:
文件 描述(进程属性)
cmdline 以\0分割的命令行参数
cwd 指向当前工作目录的符号链接
environ name->value键值对环境列表,、\0分割
exe 指向正在执行文件的符号链接
fd 文件目录,包含了指向由进程打开文件的符号链接
maps 内存映射
mem 进程虚拟内存
mounts 进程的安装点
root 指向根目录的符号链接
status 各种信息(如进程id、凭证、内存使用量、信号)
task 为进程中的每一个线程均包含一个子目录

/proc目录下的各种文件和子目录,提供了对系统级信息的访问,一般用途如下,其中方框表示目录,圆角矩形表示文件:






阅读(111) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~