现在的位置: 首页 > 综合 > 正文

exit和_exit

2018年01月29日 ⁄ 综合 ⁄ 共 607字 ⁄ 字号 评论关闭

exit和_exit函数都是用来终止进程的,当执行exit()和_exit()时,进程会无条件的停止剩下的所有操作,清除各种数据结构,并终止本进程的运行。但是,这两个函数还是有区别的。

_exit()函数的作用是,直接使进程停止运行,清除其使用的内存,并清除其内核中的各种数据结构;exit()函数则在这些基础上做了一些包装,在执行退出之前加了若干道工序。exit和_exit函数最大的区别是exit()在终止当前进程之前要检查该进程打开过哪些文件,把文件缓冲区中的内容写回文件,就是清除IO缓冲。

由于在Linux的标准函数库中,有一种被称作"缓冲IO"操作,其特征就是对应每一个打开的文件,在内存中都有一片缓冲区。

每次读文件时,会连续读出若干条记录,这样在下次读文件时就可以直接从内存的缓存区中读取,同样,每次写文件的时候,也仅仅是写入内存中的缓冲区,等满足了一定的条件(如达到了一定数量或遇到特定字符等),再将缓冲区中的内容一次性写入文件。

这种技术大大的增加了文件读写速度,但也为编程带来了一些麻烦。比如有些数据,认为已经被写入到文件,实际上因为没有满足特定的条件,他们还只是被保存在缓冲区内,这时用_exit()函数直接将进程关闭掉,缓冲区的数据就会丢失。因此,若要保证数据的完整性,最好使用exit()函数或者在之前使用fflush(fd)来刷新IO(Linux中)。

另外exit(1) 相当与return 1;

【上篇】
【下篇】

抱歉!评论已关闭.