首页 理论教育 进程退出方法及实例-嵌入式Linux编程指南

进程退出方法及实例-嵌入式Linux编程指南

时间:2023-10-31 理论教育 版权反馈
【摘要】:进程退出表示进程即将结束运行。在Linux系统中,进程退出的方法分为正常退出和异常退出两种。进程所有的缓冲区数据会自动写回,并关闭文件。调用_exit()函数_exit()用来正常结束目前进程的执行,并把参数status返回给父进程,关闭未关闭的文件。2)在“example9_5.c”中创建的代码如下所示。abort()函数的原型为进程收到某个信号,而该信号使程序终止不管是哪种退出方式,最终都会执行内核中的同一段代码。

进程退出方法及实例-嵌入式Linux编程指南

进程退出表示进程即将结束运行。在Linux系统中,进程退出的方法分为正常退出和异常退出两种。其中正常退出的方法有4种。

1.正常退出

(1)在main()函数中执行return。

(2)调用exit()函数。exit()函数的原型如下。

978-7-111-33316-6-Chapter09-30.jpg

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()函数的原型为

978-7-111-33316-6-Chapter09-31.jpg

_exit()不会处理标准I/O缓冲区。如果要更新,则需要调用exit()。

【例9-4】进程退出。

下面程序用来说明_exit()函数的应用。

设计步骤

1)在Vim中创建一个新工程文件,命名为“example9_5.c”。(www.xing528.com)

2)在“example9_5.c”中创建的代码如下所示。

978-7-111-33316-6-Chapter09-32.jpg

3)用GCC编译运行程序,结果如图9-10所示。

978-7-111-33316-6-Chapter09-33.jpg

图9-10 使用_exit()函数退出进程

(4)调用on_exit()函数

该函数的原型为

978-7-111-33316-6-Chapter09-34.jpg

on_exit()函数用来设置一个程序正常结束前调用的函数。当程序通过调用exit()或者从main()中返回时,参数function所指定的函数会被先调用,然后才真正由exit()函数结束程序。参数arg指针会传给function()函数。

2.异常退出

(1)调用abort()函数。abort()函数的原型为

978-7-111-33316-6-Chapter09-35.jpg

(2)进程收到某个信号,而该信号使程序终止

不管是哪种退出方式,最终都会执行内核中的同一段代码。这段代码用来关闭程序所有已打开的文件描述符,释放它所占用的内存和其他资源。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈