zoukankan      html  css  js  c++  java
  • 第7章进程环境总结

    1 进程终止方式

     正常终止:

      1)从main返回

      2)调用exit函数(先执行一些清理函数,atexit函数可以设置清理函数,再进入内核)

      3)调用_exit或_Exit(直接进入内核)

      4)最后一个线程从启动例程返回

      5)最后一个线程调用pthread_exit

     异常终止:

      1)调用abort

      2)接到信号终止

      3)最后一个线程对取消请求做出响应

     2 环境表

     环境指针是一个全局变量,声明extern char **environ后可用

     环境指针是环境表的首地址,环境表是环境字符串数组,环境字符串形如 name=value

     获取环境变量:

    char *getenv(const char *name)

     设置环境变量:

    int putenv(char *str)
    
    int setenv(cosnt char *name,const char *value,int rewrite)
    
    int unsetenv(const char *name)

    环境表位于程序空间的最上面,如果添加新的环境变量,则需要重新分配存储区,并将环境表复制到该存储区(malloc或realloc)

    3 程序存储空间

     命令行参数和环境表

     栈

     堆

     未初始化数据

     初始化数据

     正文段

    4 长跳转语句

    #include <setjmp.h>
    int setjmp(jmp_buf env)
    
    void longjmp(jmp_buf env,int val)

     setjmp设置跳转回到的地方,并用jmp_buf类型对象保存栈状态信息,直接调用返回0,同longjmp跳转返回val

     longjmp在跳转处调用,并将val作为setjmp的返回值

    5 资源限制

     

    #include <sys/resource.h>
    
    int getrlimit(int resource,struct rlimit *rlptr)
    
    int setrlimit(int resource,const struct rlimit *rlptr)

     linux支持的资源限制有:

     RLIMIT_AS:进程可用存储区最大长度

     RLIMIT_CORE:core文件最大字节数

     RLIMIT_CPU:CPU最大量值,超过此值,向进程发送SIGXCPU信号

     RLIMIT_DATA:数据段最大字节数(初始化数据段、非初始化数据段、堆的总长度)

     RLIMIT_FSIZE:可创建文件最大字节长度

     RLIMIT_LOCKS:进程持有文件锁最大数

     RLIMIT_NOFILE:进程能打开的最大文件数

     RLIMIT_STACK:栈的最大字节数

     struct rlimit结构记录对某个资源限制的软限制值和硬限制值

     struct rlimit

     {  

        rlim_t rlim_cur;

        rlim_t rlim_max;

     };

  • 相关阅读:
    堆和栈 的区别
    equals == 区别
    【知识点】Filter、Servlet、Listener区别与联系
    白盒测试相关的一些知识
    紧急情况下压缩了测试周期应该怎么办?
    软件性能测试与可靠性测试
    软件测试概念
    web测试方法总结
    结对测试探讨
    八种状态增加测试用例状态的精确度
  • 原文地址:https://www.cnblogs.com/buptlyn/p/4142458.html
Copyright © 2011-2022 走看看