main函数中的return
例子2中的
return
在fff()
函数中,他只会结束fff()
函数的进程,并不会结束主进程,因此结果应该是打印fff()
函数中第一个打印信息,还有主函数中的两个打印信息,结果如下图
任意位置调用void exit(int status)
使用exit
需要包含头文件#include
调用
void exit(int status)
,可以在程序的任意一个位置退出一个进程,在fff()
函数中调用exit
后,整个进程都退出了,也不会再去执行主函数中剩下的代码,结果如下图
在任意一个位置调用void _exit(int status)
使用 _exit()
需要包含头文件#include
调用
void _exit(int status)
,可以在程序的任意一个位置退出一个进程,它与exit一样,都是整个进程都退出了,结果入下图
方法二和方法三不仅长的像,连用法都很像,有必要了解一下他们之间的区别
exit
是库函数,_exit
是系统调用接口
exit
退出程序时,会刷新缓冲区,将缓冲区数据写入文件
_exit
退出程序时,直接释放资源,不会刷新缓冲区
- 我们通常用
printf
打印数据,实际上是把数据交给显示器,让显示器显示出来,这其中涉及到了不同设备之间的数据交互
如果有时候,有很多小的数据要频繁交给显示器,效率是比较低的,因此操作系统做了一种优化
- 把很多小数据放到内存缓冲区中,积累成一个大的数据,然后让显示器一次性取出来,这样只有一次设备间的交互,提高的效率
- 因此
printf
没有立即把数据交给显示器,而是放到内存中(缓冲区中),等到程序退出的时候,或者缓冲区刷新的时候才会把数据交给显示器
我们就要清楚\n的作用有两个
1.换行
2.刷新缓冲区(特定的显示器设备,通常称之为标准输出)