APUE——进程环境

来源:互联网 发布:吉利知豆质量怎么样 编辑:程序博客网 时间:2024/06/06 02:29

1.进程的启动:C程序总是从main函数开始执行,内核使用一个exec函数执行C程序。在调用main()前先调用一个特殊的启动例程,可执行文件以将此启动例程指定为程序的起始地址,启动例程从内核处取得命令行参数和环境变量值。

2.进程的终止:进程的5种正常终止方式:(1)main()函数返回;

(2)调用exit;

(3)调用_exit_Exit;

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

(5)最后一个线程调用pthread_exit;

异常终止的3种方式:(6)调用abort

(7)接到一个信号并终止

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

3个函数用于正常终止一个程序:exit(int),_exit(),_Exit()exit()终止程序时会执行一些清理程序,然后调用_exit(int)_Exit(int)进入内核,而后两个函数则是直接进入内核。main函数返回一个整数值与调用exit函数是等价的。

3.进程可以通过atexit函数注册清理函数(exithandler),注册的函数由exit自动调用。内核使程序执行的唯一方法是调用一个exec函数。进程自愿终止的唯一方法是显示或隐式(通过exit)的调用_exit_Exit函数

4.C程序的存储空间:C程序一直由这些构成(1)正文段;(2)初始化数据段;(3)非初始化数据段;(4)堆;(5)栈;典型的存储安排方式也是由低到高存储这些段。值得注意的是:(1)栈和堆相向生长,其中栈向低地址生长。(2)包含符号表的段、包含调试信息的段以及包含动态共享库链接表的段并不装载到程序映像中。(3)正文段可由多个进程共享,如果一个程序有多个执行实例,则只会有一个共享的正文段,但会有自己独立的其他段。(4)磁盘的程序文件中只存放正文段和初始化的数据段,由exec读取;、未初始化数据由exec初始化为0.size+可执行程序 命令可以查看各个段的大小。


0 0
原创粉丝点击