在Linux/Unix环境中,一个C程序是如何启动和终止的

在Linux/Unix环境中,一个C程序是如何启动和终止的

启动:

当内核执行C程序时(使用exec函数),在调用main之前会先调用一个特殊的启动例程。

启动例程会从内核取得命令行参数和环境变量值。


终止:

_exit、_Exit、exit三个函数都用于正常终止一个程序,但前两者和exit有一定区别:

_exit和_Exit调用之后立即进入内核。

exit调用之后会先执行一些清理操作,或执行一些终止处理程序(这些程序调用atexit来登记注册),然后再返回内核。


注意:

内核使程序执行的唯一方法是调用一个exec函数。

进程自愿终止的唯一办法是显式或隐式地(通过调用exit)调用_exit或_Exit。

另外,进程可由信号使其非自愿终止。