【操作系统】进程终止中exit()和_exit()的区别

目录

一、代码运行结果现象

解释现象:

二、exit()函数和_exit()函数的区别

1、exit()函数是库函数维护的

2、_exit()函数是操作系统维护的

3、exit()和_exit()有关联关系


一、代码运行结果现象

1 #include<stdio.h>
  2 #include<unistd.h>
  3 #include<stdlib.h>
  4                                                                                                                      
  5 //
  6 //_exit()
  7 int main()                                                 
  8 {                                                          
  9     printf("you can see me?");                             
 10     //先sleep3秒 程序退出                                  
 11     printf("you can see me?\n");                           
 12     //先刷新到显示屏 再sleep3秒 程序退出                   
 13     sleep(3);                                              
 14     _exit(10);                                             
 15     return 0;                                              
 16 }                                                          
 17                                                            
 18                                                            
 19 //         
 20 //exit()                                                   
 21 //int main()                                               
 22 //{                                                        
 23 //    printf("you can see me?");                           
 24 //    //先sleep3秒 最后刷新到显示屏                        
 25 //    printf("you can see me?\n");                         
 26 //    //先刷新到显示屏 再sleep3秒                          
 27 //    sleep(3);    
 28 //    exit(10);
 29 //    return 0;
 30 //}
 31 //

解释现象:

1、当调用exit()函数终止程序时,如果是 printf("you can see me?"); 语句,该语句没有加'\n',程序会先sleep3秒,再把you can see me 语句显示到显示屏上,再退出程序。

2、当调用exit()函数终止程序时,如果是 printf("you can see me?\n"); 语句,该语句添加了'\n',程序会把you can see me 语句显示到显示屏上,再sleep3秒,再退出程序。

3、当调用_exit()函数终止程序时,如果是 printf("you can see me?"); 语句,该语句没有加'\n',程序会先sleep3秒,直接退出程序,不会把 you can see me语句显示到显示屏上。

4、当调用_exit()函数终止程序时,如果是 printf("you can see me? \n"); 语句,该语句添加了'\n',程序会先把 you can see me语句显示到显示屏上,再sleep3秒,再退出程序。

二、exit()函数和_exit()函数的区别

1、exit()函数是库函数的调用接口

exit()函数是库函数维护的,库的调用接口,程序要退出时,当缓冲却区内有数据时,退出程序的时候会把数据刷新到显示屏上

2、_exit()函数是操作系统调用接口

_exit()函数是操作系统调用接口,操作系统维护的,不加换行符\n时,并不会将数据刷新到显示屏上,而是直接终止程序。

3、exit()和_exit()的关联关系

exit()底层调用的是_exit()函数,不加换行符'\n'时直接调用_exit()数据并没有刷新出来,而是调用exit()函数数据刷新出来了,由此可以知道缓冲区一定不是OS维护的,而是exit()函数维护的。

因此exit()函数将程序终止前,会把执行用户相关的清理函数,以及刷新缓冲区,关闭流等等。

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值