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