进程退出表示进程即将结束运行。在Linux系统中,进程退出的方法分为正常退出和异常退出两种。其中正常退出的方法有4种。
1.正常退出
(1)在main()函数中执行return。
(2)调用exit()函数。exit()函数的原型如下。
exit()函数用来正常结束目前进程的执行,并把参数status返回给父进程。进程所有的缓冲区数据会自动写回,并关闭文件。在main()函数中通常使用return(0)这样的方式返回一个值,但这是限定在非void情况下的,也就是voidmain()这样的形式。exit()通常是在子程序中用来终结程序的,使用该函数后,程序自动结束,跳回操作系统。
但是,如果把exit()用在main()内时无论main()是否定义成void返回的值都是有效的,并且exit()不需要考虑类型,exit(1)等价于return(1)。
exit(intexit_code)中的参数exit_code为0代表进程正常终止。若为其他值,表示程序执行过程中有错误发生,如除数为0等。
(3)调用_exit()函数
_exit()用来正常结束目前进程的执行,并把参数status返回给父进程,关闭未关闭的文件。此函数调用后不会返回,并且会传递SIGCHLD信号给父进程。父进程可以由wait()函数得到子进程的结束状态。如果执行成功,则不返回;如果执行失败,则返回-1。_exit()函数的原型为
_exit()不会处理标准I/O缓冲区。如果要更新,则需要调用exit()。
【例9-4】进程退出。
下面程序用来说明_exit()函数的应用。
设计步骤
1)在Vim中创建一个新工程文件,命名为“example9_5.c”。(www.xing528.com)
2)在“example9_5.c”中创建的代码如下所示。
3)用GCC编译运行程序,结果如图9-10所示。
图9-10 使用_exit()函数退出进程
(4)调用on_exit()函数
该函数的原型为
on_exit()函数用来设置一个程序正常结束前调用的函数。当程序通过调用exit()或者从main()中返回时,参数function所指定的函数会被先调用,然后才真正由exit()函数结束程序。参数arg指针会传给function()函数。
2.异常退出
(1)调用abort()函数。abort()函数的原型为
(2)进程收到某个信号,而该信号使程序终止
不管是哪种退出方式,最终都会执行内核中的同一段代码。这段代码用来关闭程序所有已打开的文件描述符,释放它所占用的内存和其他资源。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。