• 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数据结构,返回的是时钟时间

  • 相关阅读:
    C#中泛型类,泛型方法,泛型约束实际应用
    Sql语法高级应用之七:如何在存储过程中使用事务
    再探motan
    终于好像懂motan了!!!
    java 反射详解
    设计模式之一工厂方法模式(Factory Method)
    记一次CPU占用率和load高的排查
    浅谈反射性能
    短网址服务(TinyURL)生成算法
    记一次阿里云中间件面试
  • 原文地址:https://www.cnblogs.com/hitwtx/p/2175195.html
Copyright © 2020-2023  润新知