Linux多任务编程(四) exit()函数及其基础实验
exit()和_exit()函数 函数说明 创建进程使用fork()函数,执行进程使用exec函数族,终止 进程则使用exit()和_exit()函数。当进程执行到exit()或_exit()函数时,进程会无条件的停止剩下的所有操 作,清除各种数据结构,并终止本进程的运行。但是,这两个函数还是有区别的,其调用过程如图1所示: 从图1可以看出,_exit()函数的作用是:直接使进程停止运行,清除其使用的内存空间,并清除其 在内核中的各种数据结构;而exit()函数则在这些基础上做了一些包装,在执行退出之前加了若干道工序。 exit()函数和_exit()函数的最大区别就在于exit()函数在终止当前进程之前要检查该进程打开过哪些文件, 把文件缓冲区中的内容写回文件,也就是图1中的“清理I/O缓冲”一项。 在Linux的标准函数库中,有 一种被称作“缓冲I/O(buffered I/O)”的操作,其特征就是对应每一个打开的文件,在内存中都有一片缓 冲区。 每次读文件时,会连续读出若干条记录,这样在下次读文件时就可以直接从内存的缓冲区中读 取;同样,每次写文件时,也仅仅是写入内存中的缓冲区,等满足了一定的条件(如达到一定数量或遇到特定 字符等,最典型的就是咱们的vim中使用的:w命令),再将缓冲区中的内容一次性写入文件。 这种技术 大大增加了文件读写的速度,但也给咱们的编程带来了一些麻烦。比如有些数据你认为已经被写入到文件中, 实际上因为没有满足特定的条件,它们还只是被保存在缓冲区内,这时用_exit()函数直接将进程关闭掉,缓 冲区中的数据就会丢失。因此,若想保证数据的完整性,最好使用exit()函数。 函数语法 下表 列出了exit()和_exit()函数的语法要点: 基础实验 以下两个基础实验1比较了exit()和_exit()函数的区别。由于 printf()函数使用的是缓冲I/O方式,该函 数在遇到“n”换行符时自动从缓冲区中将记录读出,以下两个基础实验就是利用这个性质来进行比较的。以 下为实验1的代码: (编辑:滁州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- linux – 解析samba testparm消息:rlimit_max:rlimit_max
- Boost application performance using asynchronous I/O-re
- 《星空吞噬》新版本今日萌情登陆IOS
- linux忘记root密码的解决方法
- Linux分区方案、文件结构与挂载
- linux – Unix套接字vs TCP / IP主机:端口
- ios7 beta4降级教程
- 最速SAM解锁全基带iPhone4/4s,全自动扫描添加IMSI(附视频)
- macos – 如何在OS X上使用ditto在Linux上像cp -a一样工作
- RedHat5.5 升级安装GCC-4.6.1详细教程