- 当内核起动C程序时(使用一个exec()函数),在调用main()前先调用一个特殊的起动例程。可执行程序文件将此起动例程指定为程序的起始地址——这是由连接编辑程序设置的,而连接编辑程序则由C编译程序(通常是cc)调用。起动例程从内核取得命令行参数和环境变量值,然后为调用main()函数作好安排。
- 有五种方式使进程终止
正常终止
从main()返回
调用exit()
调用_exit()
异常终止
调用abort()
由一个信号终止
wait()/waitpid()可以获得进程终止的状态
- 按照ANSIC的规定,一个进程可以登记多至32个函数,这些函数将由exit()自动调用。我们称这些函数为终止处理程序(exit handler),并用atexit()函数来登记这些函数。
atexit()的参数是一个函数地址,当调用此函数时无需向它传送任何参数,也不期望它返回一个值。exit()以登记这些函数的相反顺序调用它们。同一函数如若登记多次,则也被调用多次。
- 每个程序都接收到一张环境表。与参数表一样,环境表也是一个字符指针数组,其中每个指针包含一个以null结束的字符串的地址。全局变量environ则包含了该指针数组的地址。
extern char **environ;
按照惯例,环境由name=value格式的字符串组成
getenv()/putenv()/setenv()可以用来取得/设置环境变量
进程的环境
最新推荐文章于 2022-10-26 09:41:16 发布