UNIX环境高级编程笔记——7进程环境
来源:互联网 发布:索尼xz1国行网络 编辑:程序博客网 时间:2024/05/21 17:43
main函数
当内核执行C程序时,使用的是一个exec函数。在调用main之前先调用一个特殊的启动例程。可执行程序文件将此启动例程指定为程序的起始地址——这是由链接编辑器设置的,而连接编辑器则有C编译器通常是cc调用。启动例程从内核取得命令行参数和环境变量值,然后为按上述方式调用main函数做好安排。
进程终止
有3个函数用于正常终止一个程序:_exit和_Exit立即进入内核,exit则先执行一些处理(包括调用执行各终止处理程序,关闭所有标准I/O流等),然后进入内核。
main函数返回以整型值调用与exit是等价的,所以,exit(0)等价于return(0)。
atexit函数用于注册exit函数,一个进程可以登记32个函数,这些函数由exit自动调用。调用顺序与他们登记时候的顺序相反。例如:登记func1(),func2(),则调用时先调用func2(),func1().
命令行参数
int main(int argc, char *argv[]),标准都要求argv[argc]是一个空指针。有时候可以用来控制循环。
环境表
与参数表一样,环境表也是一个字符指针数组,由全局变量environ维护。按照惯例,环境由:name=value来表示,习惯上名字用大写。
通常用getenv和putenv函数来访问特定的环境变量,二不是用environ变量。但是如果要产看整个环境,则必须使用environ指针。
C程序的存储空间布局
主要分为:1.正文段;2.初始化数据段;3.非初始化数据段;4.栈;5.堆
初始化的数据和正文由exec从程序文件中导入;非初始化的数据由exec初始化为0;最高位地址用于保存命令行参数和环境变量;高位地址作为栈空间;地位地址靠近非初始化数据的地址作为堆空间。所以堆顶和栈底之间未用的虚地址空间很大。
共享库
共享库即动态链接库,使得可执行文件的正文和数据段的长度明显减小。可以用size命令来查看可执行文件的大小,例如:size nvrsync。
存储器分配
三个用于存储空间动态分配的函数:
1.malloc;分配指定字节数的存储区,内容未定义;
2.calloc:为指定数量指定长度的对象分配存储空间,且初始化为0;
3.realoc:更改以前分配区的长度(增加或减少)。
环境变量
环境ifUC换的形式通常为:name=nalue。
跟环境变量有关的函数主要有3个,函数原型是:
#include <stdlib.h>
int putenv(char *str);
int setenv(const char *name, const char *value, int rewrite);
int unsetenv(const char *name);
第七章内容基本如上,希望可以通过以上笔记摘要迅速回顾内容,并学以致用。
- UNIX环境高级编程笔记——7进程环境
- 《UNIX环境高级编程》学习笔记——进程环境
- UNIX环境高级编程——进程
- Unix环境高级编程—进程关系
- 《unix高级环境编程》进程环境——进程终止
- 《unix高级环境编程》进程环境——进程终止
- unix环境高级编程-7-进程环境
- 《UNIX环境高级编程》--7进程环境
- 《UNIX环境高级编程》笔记--进程时间
- 《UNIX环境高级编程》笔记--进程组
- 《UNIX环境高级编程》笔记--守护进程
- UNIX环境高级编程笔记之进程
- UNIX环境高级编程——进程环境
- UNIX环境高级编程——进程环境
- 《unix高级环境编程》进程环境——环境变量
- 《unix高级环境编程》进程环境——异常处理
- 《unix高级环境编程》进程环境——环境变量
- 《unix高级环境编程》进程环境——异常处理
- c++中的.hpp文件
- php 内存回收机制
- fork,vfork,clone创建子进程用法
- 手机吸费代理 高收费电话 电话群呼器
- 学术论文格式
- UNIX环境高级编程笔记——7进程环境
- C语言变量声明加冒号的用法,位域
- 哪里有电话吸费 手机吸费平台 小投资高回报
- 2014赚钱项目 供应手机吸费 无风险
- 俄罗斯方块开发小结
- leetcode: Remove Nth Node From End of List
- 现在开始,开发一个OS
- Activiti源码分析(框架、核心类。。。)
- cocos2dx-3.2之创建精灵和简单运动