UNIX 进程环境
第一次写博客,瞎写写~(下面是读书笔记)
第七章 UNIX进程环境
7.3 进程终止
mian函数的的 “return 0 ;” 等价于exit(0);
atexit函数定义如下。
int atexit(void (*fun)(void));
这函数的参数为函数地址,其功能用来注册额外的退出函数,最多注册32个,后注册先调用,注册多次可重复调用。
创建进程的唯一方式是调用exec,进程自愿终止的唯一方式为显示或隐式的调用exit
7.5 环境表
环境表是一个字符指针数组extern char** environ;
7.6 C程序(UNIX)的存储空间布局。
1.正文段(应该是代码段)
2.初始化数据段 (这个应该是存放一些全局变量的地方)
3.bss段,书上没讲明白留空——
4.堆
5.栈
7.7 共享库
7.8 存储器分配
7.9 环境变量
name=value
UNXI内核并不查看这些字符,他们的解释完成取决于各个应用程序。
getenv函数用于取得环境变量,获取登录名环境变量示例如下
#include<stdlib.h>
char* pEvn = getenv("LOGNAME");
7.10 setjmp和longjmp函数
具体用法
setjmp相当于设置一个还原点,longjmp通过设置的还原点回滚到此处,可以用来作为一些逻辑异常的处理。
7.11 getrlimit和setrlimit函数
这两个函数可以获取和更改进程的资源限制。
更改资源限制时,必须遵循下列三条规则
- 进程可以将其软限制更改为小于等于其硬限制的值。
- 任何进程都可以降低其硬限制,单他必须大于等于其软限制的值。这种降低对普通用户是不可逆的。
- 只有超级用户进程可以提高硬限制的值。
具体用法