进程环境 知识点汇总《APUE》 chapter-7
来源:互联网 发布:linux corosync 编辑:程序博客网 时间:2024/05/22 05:10
提问形式复习进程环境的相关知识点
原文链接:http://blog.csdn.net/feather_wch/article/details/50722815
1-main的调用过程?
C程序是有kernel调用exec程序之一来调用的。在main函数之前存在着特殊的启动函数(start-up)。启动函数被设置为程序的开始地址。这是由link editor
设置的。
2-启动程序的作用?
用于从kernel(内核)获得一些值,如获得了命令行参数(command-line argument)和环境(environment)
3-进程终止的几种办法
一般的终止方式:
1. 从main return
2. 调用exit
3. 调用_Exit, _exit
4. 开始程序的最后一个线程 return
5. 在最后一个线程调用 pthread_exit
异常的终止方式:
6. 调用abort
7. 接收到信号
8. Response of the last thread to a cancellation request(11.5 and 12.7)
4- _exit, _Exit和exit的区别?
exit会先进行清除工作,再返回到kernel(例如会调用fclose关系所有打开的流,所有缓冲的输出数据都会flush)
_exit, _Exit会立即返回到kernel
5-exit handler是什么?如何设置?
Exit handler:就是exit自动调用的函数
可以通过atexit
进行注册。
6- 程序如何开始和结束的流程:
内核通过exec执行程序,程序第一段执行的内容是C启动程序,该启动程序用于从kernel获得命令行参数和环境,然后启动程序调用main执行。结束的时候,可以通过_exit和_Exit直接返回kernel;也可以通过调用exit来调用exit handlers进行相应的清理工作,最后再返回kernel
7- environment list是什么?environ是什么?
字符指针的数组
environ是全局变量
8-C程序的五个组成部分,各部分作用?(高地址额外有命令行参数和变量)
- text
- intialized data
- uninitialized data(bss)
- stack
- heap
9-共享库的作用?优缺点
共享库移除了可执行文件中共同的库程序(library routines),在内存中存放着library routine的copy,任何进程都可以调用。
优点:1. 减少可执行文件的尺寸 2. 库程序可以直接用新版本替换,而不需要重新连接每个使用该库的程序(前提是:参数类型和数量不变)
缺点:程序第一次调用,或者该库程序第一次调用的时候,会有额外的时间消耗
10-内存分配有哪些库函数
malloc/calloc/realloc/alloca
11- alloca和malloc的不同
malloc
是从heap
分配的空间 alloca
是从当前函数的stack frame
分配的空间
12-alloca的优缺点:
优点:能自动释放空间
缺点:一些系统不支持alloca
,这样的系统调用alloca
无作用
13-什么是环境变量?
环境字符串例如name=value的形式,例如环境变量HOME 和 USER
14-环境变量的作用
HOME or USER 在登陆时自动被设置
可以在shell的启动文件里面设置环境变量来控制shell的操作
又如环境变量MAILPATH能告知shell哪里能找到mail
15-环境变量的操作函数(getenv/putenv/setenv/unsetenv)的作用
链接7.9:http://blog.csdn.net/feather_wch/article/details/50740004
16-putenv和setenv的区别
见链接7.9
17-环境变量相关注意点
- 我们应该总是使用getenv来获取环境的特殊值,而不是直接访问environ
- 下章我们会知道我们可以仅仅影响当前进程和其子进程的环境
- 我们不能影响父进程的环境,父进程经常是shell
- 环境变量删除容易,增加难(栈上面存放环境变量的空间是无法扩充的
18-修改、增加环境变量的几种情况
见链接7.9
19-stack frame是什么?C中stack frames用什么实现的?
每个function中的自动变量都保存在stack frame中
系统内部并有没有支持stack的硬件,C的实现可能会使用链表来实现stack frames
20-setjmp和longjmp的作用
在不同function之间实现goto label的功能。
21-调用上面两个函数,如何不让变量值回退?
变量为volatile
变量或者static变量
22- 编写使用非局部跳转的可移植性代码必须使用volatile
23- 使用自动变量的潜在问题
自动变量被释放后,依然会被引用,比如函数返回了内部变量的地址。
24- getrlimit和setrlimit的作用
25- 资源限制如何得到的?
系统资源限制是系统启动时由进程0
设置的,且由后续的进程继承。
26- 改变资源限制的三个准则
- 进程的软限制(soft limit)需要小于等于硬限制(hard limit)
- 进程可以降低其硬限制,以大于等于soft limit。注意:降低硬限制对一般用户不可逆!
- 仅仅超级用户进程(superuser process)可以提高硬限制
- 进程环境 知识点汇总《APUE》 chapter-7
- APUE——Chapter 7、8:进程环境和进程控制
- Chapter 7 进程环境
- [APUE chapter 13] 守护进程
- APUE学习--Ch.7 进程环境
- 读书笔记-APUE第三版-(7)进程环境
- apue 第7章 进程环境
- APUE(7) ---- 进程环境表 char **environ
- APUE进程环境
- 【APUE】进程环境
- APUE进程环境小结
- APUE进程环境
- APUE 进程环境
- APUE学习:进程环境
- APUE------进程环境
- [APUE]进程环境
- APUE 进程环境
- 《APUE:chapter 13 》守护进程测试
- hdu 1247/哈理工oj 2057 Hat’s Words【字典树】
- 安卓 Bitmap 高效加载
- YTU 2436: C++ 习题 输出日期时间--友元类
- codeforces #336 E. Marbles (字符串hash或者kmp匹配)
- 网络编程_UDP编程原理_发送类型_cs与bs区别JAVA187-188
- 进程环境 知识点汇总《APUE》 chapter-7
- 电视剧
- 容器vs.虚拟机
- 2007年老文:HP总裁孙振耀退休时的信
- CardView 设置 selector
- SICK激光雷达LMS511笔记一
- Linux驱动开发必看详解神秘内核
- YTU 2437: C++ 习题 比较大小-类模板
- 获取安卓应用包名和入口 Activity