【Linux】进程控制——进程终止的三种方法

文章目录

  • 进程终止
    • 方法一
      • 例子1
      • 例子2
    • 方法二
      • 例子1
    • 方法三
      • 例子1
    • exit和_exit的区别
    • 打印数据——缓冲区

进程终止


方法一

main函数中的return

例子1

【Linux】进程控制——进程终止的三种方法_第1张图片

我们在主函数中的return位置就结束了进程,因此不会再打印return后面的语句,结果如下图
在这里插入图片描述


例子2

【Linux】进程控制——进程终止的三种方法_第2张图片

例子2中的returnfff()函数中,他只会结束fff()函数的进程,并不会结束主进程,因此结果应该是打印fff()函数中第一个打印信息,还有主函数中的两个打印信息,结果如下图
【Linux】进程控制——进程终止的三种方法_第3张图片


方法二

任意位置调用void exit(int status)

使用exit需要包含头文件#include

例子1

【Linux】进程控制——进程终止的三种方法_第4张图片

调用void exit(int status),可以在程序的任意一个位置退出一个进程,在fff()函数中调用exit后,整个进程都退出了,也不会再去执行主函数中剩下的代码,结果如下图
【Linux】进程控制——进程终止的三种方法_第5张图片


方法三

在任意一个位置调用void _exit(int status)

使用 _exit()需要包含头文件#include

例子1

【Linux】进程控制——进程终止的三种方法_第6张图片

调用void _exit(int status),可以在程序的任意一个位置退出一个进程,它与exit一样,都是整个进程都退出了,结果入下图
在这里插入图片描述


exit和_exit的区别

方法二和方法三不仅长的像,连用法都很像,有必要了解一下他们之间的区别

  • exit是库函数,_exit是系统调用接口

  • exit退出程序时,会刷新缓冲区,将缓冲区数据写入文件

  • _exit退出程序时,直接释放资源,不会刷新缓冲区

打印数据——缓冲区

  • 我们通常用printf打印数据,实际上是把数据交给显示器,让显示器显示出来,这其中涉及到了不同设备之间的数据交互

如果有时候,有很多小的数据要频繁交给显示器,效率是比较低的,因此操作系统做了一种优化

  • 把很多小数据放到内存缓冲区中,积累成一个大的数据,然后让显示器一次性取出来,这样只有一次设备间的交互,提高的效率
  • 因此printf没有立即把数据交给显示器,而是放到内存中(缓冲区中),等到程序退出的时候,或者缓冲区刷新的时候才会把数据交给显示器

我们就要清楚\n的作用有两个

1.换行

2.刷新缓冲区(特定的显示器设备,通常称之为标准输出)

你可能感兴趣的:(Linux,linux,运维,服务器)