return/exit/—exit三种返回方式的区别
2017-10-22 14:27
344 查看
主要的区别如下:
1.exit()函数与_exit()函数最大的区别就在于exit()函数在调用exit系统调用之前要检查文件的打开情况,把文件缓冲区中的内容写回文件。
2.exit用于结束正在运行的整个程序,它将参数返回给OS,把控制权交给操作系统;而return是退出当前函数,返回函数值,把控制权交给调用它的函数。exit是系统调用级别,它表示一个进程的结束;而return 是语言级别的,它表示调用堆栈的返回。在main函数结束时,会隐式地调用exit函数,所以一般程序执行到main()结尾时,则结束主进程。exit将删除进程使用的内存空间,同时把错误信息返回给父进程。
深入了解:
在linux的标准库函数中,有一套称作高级I/O的函数,我们熟知的printf 、fopen 、fread 、fwrite都在此列,他们也被称作缓冲I/O。其特征是对应每一个打开的文件,都存在一个缓冲区, 在内存中都有一片缓冲区,每次读文件会多读若干条记录,这样下次读文件时就可以直接从内存的缓存中取出,每次写文件时也仅仅是写入到内存的缓冲区,等待满足一定的条件(达到一定的数量,或者遇到特定字符,如换行和文件结束符EOF),再将缓冲区的内容一次性的写入文件,这样就大大增加了文件读写的速度,但也为我们编程带来了一点点麻烦,如果有些数据,我们认为已经写入了文件,实际上因为没有满足特定的条件,他们还只是保存在缓冲区内,这时我们用_exit函数直接将程序关闭,缓冲区中的数据就会丢失,反之,如果向保证数据的完整性,就一定要使用exit函数。
exit()函数定义在stdlib.h中,而_exit()定义在unistd.h中。exit()和_exit()都用于正常终止一个函数。但_exit()直接是一个sys_exit系统调用,而exit()则通常是普通函数库中的一个函数。它会先执行一些清除操作,例如调用执行各终止处理函数、关闭所有标准IO等,然后调用sys_exit。
相关文章推荐
- 程序代码中退出函数exit()与返回函数return ()的区别
- exit函数和return返回之间的区别
- fork与vfork区别及用exit于return返回时的区别
- Linux 下用vfork()创建进程,子进程用return和exit返回的区别
- return, exit, _exit的区别
- PHP跳出循环的方法及continue、break、exit、return的区别
- 解析php中die(),exit(),return的区别
- 常见xml的三种解析方式的区别
- 三种实现servlet的方式有什么区别?--转载
- return和 exit的区别
- return abort exit函数的区别
- exit(),_exit(),return,abort()函数的区别
- Linux编程中的坑——C++中exit和return的区别
- perl中三种定义变量方式的一点区别
- exit,_exit,return 的区别
- SpringMVC返回json数据的三种方式
- exit与return的区别
- return和exit的区别
- JS中创建函数的三种方式及区别
- 三种多路复用IO实现方式:select,poll,epoll的区别