Unix学习之 APUE学习笔记 之 系统限制,errno,时间观念

主要是学习:

http://blog.csdn.net/intrepyd/article/details/4508770 

中的记录,并加上 对《深入Linux系统内核 》的学习精简版  

1.  系统限制

   目的: 为了保证系统的兼容性以及可以执行

   主要分为编译时系统限制和运行时系统限制,整的跟C++多态一样

   编译时系统限制可以在头文件中定义,例如<limit.h>中对于最大最小值的限制,运行时限制要求进程调用一个函数实现,主要分为sysconf 函数查询与目录和文件不相关的运行时限制,pathconf和fpathconf与文件和目录相关的运行时限制

   实际上,编译时限制也可以通过函数进行查询(如sysconf(SC_CHAR_MAX)),而运行时限制也能在头文件中定义。或许只有那些由内核通过proc文件系统进行读取或者配置的才能称为运行时限制

  可以在终端通过 find /proc/sys-name '*max*'找出这些限制

使用上述的三个函数实现运行时限制:

long sysconf(int name);

long pathconf(const char *pathname,int name);

long fpathconf(int filedes,int name);

2. errno  变量

   当一个函数出错时,经常的是返回一个负值(-1),而且整型变量errno通常被设置为含有附加信息的一个值,例如:open()正常返回一个非负的文件描述符,而在出错时,有大约15中的errno值

  当使用errno时,注意两点: 

  (1) 如果没有出错,则改制不会被函数改变,仅当出错时,才检查errno值

   (2)任意函数的errno都不会被设置为0,在<errno.h>中所有值都不为0

打印出错信息: C中定义了两个函数用于打印出错信息

char * strerror (int errnum);void perror(const char *msg);

在多线程下,多线程共享进程的地址空间,但每个线程都有自己的errno,避免一个线程影响另一个线程

3. 时间

  系统使用的是两种不同的时间概念: 进程时间和日历时间

其中进程时间(clock_t)分为:时钟时间,用户CPU时间,系统CPU时间,时钟时间又成为墙上始终时间,记录继承运行的总时间,其值与系统中同时运行的时间数有关

用户CPU时间,是执行用户指令所用的时间,系统CPU时间,进程执行内核程序所用的时间

任一进程及其终止子进程(通过父进程wait或waitpid)的用户和系统CPU时间可以通过调用函数times函数获得,保存为tms数据结构,返回的是时钟时间

posted @ 2011-09-13 22:30  wtx  阅读(304)  评论(0编辑  收藏  举报