进程控制—终止和等待

进程终止

进程退出场景

我们常见的进程退出场景有如下几种:
代码运行完毕,结果正确
代码运行完毕,结果不正确
代码异常终止

退出码

我们可以通过echo $?来查看最近一次进程退出时的退出码。
这里使用一段代码来看看我们编写的函数的退出码是什么?

#include<stdio.h>

int main()
{
   
	printf("hello world\n");
	return 1;
}

运行结果如下:
在这里插入图片描述
这里我们可以看到我们将return值设为1,使用echo $?打印出来的退出码也是1,说明main的return值就是进程的退出码。第二次打印退出码打印的是echo $?的退出码,这说明代码运行完毕,结果正确,返回0,代码运行完毕,结果不正确返回非0。

错误码

错误码和之前学过的命令行参数以及环境变量类似,都是以字符串的形式存放在对应是数组中,可以通过遍历下标来查看,下面通过一段代码来查看有哪些错误码

int main()
{
   
int i=0;
for(i=0;i<100;i++)
{
   
  printf("%d:%s\n",i,strerror(i));
}
return 0;
}

运行结果如下:
在这里插入图片描述

退出程序

exit

使用exit命令可以直接退出程序,在任意位置调用,都代表终止进程,参数是退出码。

int main()
{
   
    printf("hello world\n");
    exit(10);
    printf("hello world\n");
  	return 0;
}

在这里插入图片描述
这里看到exit后面()内的数字就是退出码,并且进程会在遇到exit位置时就会终止进程,不执行后面的代码。

return

return:main函数return,代表进程退出,return是我们比较常用的一种退出进程的方式,这里需要注意的是exit和return本身就会要求系统进行缓冲区刷新。执行return n等同于执行exit(n),因为调用main的运行时函数会将main的返回值当做 exit的参数。

int main()
{
   
    printf("hello world\n");
    exit(10);
    printf("hello world\n");
  	return 0;
}

在这里插入图片描述
这里我们看到即使没有使用\n选项,系统也进行了缓冲区刷新。

_exit

_exit:强制终止进程,不进行程序的后续收尾工作,比如刷新缓冲区.

int main()
{
   
  printf("hello world");
  sleep(4);
  _exit(12)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值