Linux 进程:exit和_exit的辨析

  这里来认识exit函数_exit接口 ,它们的作用是类似的,都是在调用后退出程序,可以在程序的任何地方调用

1.接口与函数

exit函数和_exit接口,一个函数,一个接口。那么函数和接口有什么不同的吗?

  • 系统调用接口:是操作系统提供的访问内核功能的接口
  • 库函数:程序员对操作系统提供的系统调用接口的封装。(因为程序员觉得接口还不够好用,就封装了接口,使得它们更好用)

我们可以这么理解:库函数 = 接口+其他的一些东西。

2.缓冲区

  在进行exit和_exit的辨析前,需要了解一下什么是缓冲区,因为它们的不同之处就在于缓冲区。

  缓冲区:数据在写入文件前,首先会放到缓冲区中,等到缓冲区满了之后,再一次性刷新缓冲区,把缓冲区的内容写入到文件中。

  这样是为了减少IO次数,因为一次数据的写入就是一次IO操作。如果我们每次都直接把数据写入到文件,意味着每写入一次就要进行一次IO操作。但是如果将多个要写入的数据都先放到缓冲区,然后一次性将缓冲区数据写入到文件中,就相当于多条数据只进行了一次IO操作,这样无疑提升了效率。

  比如常使用的printf函数,我们每次打印的如果数据比较少,就会先存放在缓冲区,等到缓冲区的内容足够多,才会一次性打印出来。

  来看看下面两行代码,不同之处在于第二行代码后面有换行符’\n’,当添加了换行符意味着这一行代码会直接打印,而不是放到缓冲区。

printf("Hello");//数据先放在缓冲区,等到缓冲区满刷新                                                                                  
printf("Hello\n");//数据直接打印

3.exit 与 _exit

(1)_exit

void _exit(int status); 系统调用接口

  作用:在程序的任何地方都可以调用,调用后退出程序。退出前不刷新缓冲区,而是直接退出并释放资源,因此缓冲区的那些数据并不会被输出。

(2)exit

void exit(int status); 库函数

  作用:在程序的任何地方都可以调用,调用后退出程序。退出前刷新缓冲区,把缓冲区的数据都输出。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值