C程序总是从main函数开始执行。main函数的原型是: int main(int argc, char *argv[]); 其中,argc是命令行参数的数目,argv是指向参数的各个指针所构成的数组。命令行参数将在7.4节详细说明。当内核起动C程序时,使用一个exec函数(8.9节将说明exec函数),在调用main前先调用一个特殊的起动例程。可执行程序文件将此起动例程指定为程序的起始地址——这是由连接编辑程序设置的,而连接编辑程序则由C编译程序(通常是cc)调用。起动例程从内核取得命令行参数和环境变量值,然后为调用main函数作好安排。
创建新进程fork函数fork函数干什么fork函数与vfork函数的区别在哪里为何在一个fork的子进程分支中使用_exit函数而不使用exit函数
进程终止有五种方式:
-
正常终止:
-
从main返回。
-
调用exit。
-
调用_exit。
-
异常终止:
-
调用abort (见第10章)。
-
由一个信号终止(见第10章)。
上节提及的起动例程是这样编写的,使得从main返回后立即调用exit函数。如果将起动例程以C代码形式表示(实际上该例程常常用汇编语言编写),则它调用main函数的形式可能是: exit(main(argc, argv));
exit和_exit函数用于正常终止一个程序:_exit立即进入内核,exit则先执行一些清除处理(包括调用执行各终止处理程序,关闭所有标准I/O流等),然后进入内核。
相关图像:
暂无评论