Linux进程终止

进程终止

进程退出场景

  • 代码运行完毕,结果正确
  • 代码运行完毕,结果不正确
  • 代码异常终止

进程常见退出方法

  • 正常终止(可以通过echo $?查看进程退出码)
    1. 从main函数返回,程序终止。
    2. 调用exit终止,它会执行一些清理工作(如关闭文件、释放内存等),然后退出程序。
    3. _exit,_exit 函数也是用来终止进程的,它们会直接退出程序,不会执行任何清理工作。
  • 异常退出:
    1. ctrl + c,信号终止

main函数返回

在主函数main最后加上return,最后会返回给bash
ps:进程正常退出的退出码是 0
在这里插入图片描述在这里插入图片描述
可以看到echo把主函数所返回的22读取出来并打印在屏幕。

exit函数返回

exit 函数是用来终止进程的,它会执行一些清理工作(如关闭文件、释放内存等),然后退出程序。
exit函数的参数是当前进程要返回的退出码,该函数可以在任意位置调用
ps : main函数退出的时候,也会会隐式调用 exit

exit()函数原型如下:

#include <stdlib.h>
void exit(int status);

status 填写需要返回的退出码
exit(0)表示程序正常退出,非0表示非正常退出。

在这里插入图片描述
在这里插入图片描述
exit函数同样能够返回退出码并被echo $?打印

_exit 函数返回

_exit函数的参数是也是当前进程要返回的退出码,可以在任意位置调用,其使用方法与 exit 基本一致,这里不再演示,感兴趣的可以自行演示。

exit与_exit的区别

  1. 头文件

exit 的头文件

#include<stdlib.h>

_exit 的头文件

#include<unistd.h>
  1. 功能
  • _exit()函数:直接使进程停止运行,清除其使用的内存空间,并销毁其在内核中的各种数据结构;
  • exit()函数:在调用 exit 系统调用之前要检查文件的打开情况,把文件缓冲区中的内容写回文件,再清除其使用的内存空间,并销毁其在内核中的各种数据结构;

在这里插入图片描述

测试exit与_exit的不同

exit()
这里printf(“Text”); 并没有加换行符 \n ,我们来看输出效果:

在这里插入图片描述
在这里插入图片描述
exit函数在退出前对其进行处理,将字符串“exit”从数据流中输出。

_exit()
这里printf(“Text”); 也没有加换行符 \n ,我们来看输出效果:
在这里插入图片描述

在这里插入图片描述
_exit函数直接退出了程序,并没有将字符串“_exit”输出。

从中我们可以看到exit和_exit的区别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ryan.Alaskan Malamute

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值