随笔 - 733  文章 - 2  评论 - 12  阅读 - 92万

C语言-错误处理

标记程序的运行状态和控制主要有以下几种:break/continue/return/参数的返回值/exit(int n)_exit() atexit((*p)(参数列表)):

1 break:用在开关语句、循环语句、和if结合使用。表示跳出当前开关、循环体(仅跳出一层),执行开关循环体后面的程序,和if结合使用表示满足条件则结束循环。注意break对if else不起作用,在多次循环中只能跳出一层。

2 continue:用在循环体、和if配套使用。表示结束本轮循环强制进行下一轮循环。和if结合使用可加速循环。

3 return:是语言级别的,表示调用堆栈的返回,返回到上层调用函数并带回返回的状态信息,这一点与函数返回值有相似的地方,只是函数返回值值可以返回实用的数据和状态信息。其中没有返回值的函数也可以且尽可以返回状态信息:0表示正常 1表示异常,也有exit()的作用,但状态信息只有2个。在主函数中调用return相当于exit

4 exit(int n):系统级的库函数(在stdlib中函数原型为 void exit (status),表示系统进程调用结束,作用:结束程序、关闭文件清理缓存、返回状态信息n(小于256的任意整数)给操作系统OS以便不同的任务处理。如果是单进程状态信息返回给操作系统,若是多进程则返回给父进程。

  进程与线程:

  进程:是系统OS分配调度资源的基本单位,一个进程至少拥有一个线程,系统拥有多个进程,一个进程的崩溃不会导致整个系统的瘫痪,但多进程在进程间切换开销大。

  线程:线程是进程的一个可调度的实体,线程间协同并共享同一个进程的资源,一个线程的崩溃将导致整个应用软件的崩溃。一个线程只隶属于一个进程,不同进程的线程间只有通过信息机制才能通讯。

5 _exit():与exit()的作用差不多就是不清理缓存。

6atexit(void (*p)(参数列表)):ISO C规定, 一个进程最多可登记32个终止处理函数, 这些函数由exit按登记相反的顺序(堆栈型)自动调用。如果同一函数登记多次, 也会被调用多次。

posted on   杰瑞鼠  阅读(441)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示