进程的环境
2015-08-01 08:12
330 查看
当执行C语言程序时,在到main函数之前,会先调用一个特殊的启动历程,可执行文件会先跳到启动历程的地址,从内核中调用参数与环境,为调用main函数做好准备。exit,与_EXIT,_exit函数可用于退出函数,其都返回终止状态,atexit函数可登记错误处理函数,main函数调用完后,登记的函数可以执行,且是按登记的顺序倒序执行,同一个函数被调用多次就执行多次。
内核使程序执行的唯一方法为调用一个exec函数,进程自愿终止的唯一方法是显式或隐式(通过调用exit)调用_exit与_EXIT。进程也可非自愿地由一个信号终止。每个程序都产生一张环境表,是一张指针数组表,由**environ指向该表,该表中的表项都指向环境字符串。环境由name=value这样的字符串组成,可通过getenv函数通过名字得到相应的环境值,可用putenv,setenv,unsetenv来加入,修改,取消相应的环境变量。C程序由以下几部分组成,即正文,初始化数据段,未初始化数据段,栈以及堆,命令行参数和环境变量,依次地址增加。共享库通过动态链接可有效降低文件的大小。malloc,calloc,realloc可用来分配储存空间,
2函数setjmp与longjmp可以跨越函数进行跳转,但调用这两个函数后,包含setjmp的函数储存在寄存器中的值会回滚。getrlimit与serrlmit可以用来获得与修改一个进程的资源限制。
内核使程序执行的唯一方法为调用一个exec函数,进程自愿终止的唯一方法是显式或隐式(通过调用exit)调用_exit与_EXIT。进程也可非自愿地由一个信号终止。每个程序都产生一张环境表,是一张指针数组表,由**environ指向该表,该表中的表项都指向环境字符串。环境由name=value这样的字符串组成,可通过getenv函数通过名字得到相应的环境值,可用putenv,setenv,unsetenv来加入,修改,取消相应的环境变量。C程序由以下几部分组成,即正文,初始化数据段,未初始化数据段,栈以及堆,命令行参数和环境变量,依次地址增加。共享库通过动态链接可有效降低文件的大小。malloc,calloc,realloc可用来分配储存空间,
2函数setjmp与longjmp可以跨越函数进行跳转,但调用这两个函数后,包含setjmp的函数储存在寄存器中的值会回滚。getrlimit与serrlmit可以用来获得与修改一个进程的资源限制。
相关文章推荐
- Linux 自检和 SystemTap
- Lua和C语言的交互详解
- 关于C语言中参数的传值问题
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言内存对齐实例详解
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- 探讨C语言的那些小秘密之断言
- C语言实现BMP转换JPG的方法
- 深入探讨C语言中局部变量与全局变量在内存中的存放位置
- C语言查找数组里数字重复次数的方法
- C语言泛型编程实例教程
- C语言中使用lex统计文本文件字符数
- C语言进制转换代码分享
- 基于C语言fflush()函数的使用详解
- C语言单链队列的表示与实现实例详解
- 关于C语言除0引发的思考
- 深入分析C中不安全的sprintf与strcpy
- Lua教程(四):在Lua中调用C语言、C++的函数