当前位置: 首页 > news >正文

操作系统错误处理

错误处理

1、通过函数的返回值表示执行错误:
//  返回合法值表示成功  返回非法值表示失败
//  计算大小、查找
long file_size(const char* path)
{FILE* fp = fopen(path,"r");if(NULL == fp)return -1;  //  返回非法值fseek(fp,SEEK_END,0);long size = ftell(fp);fclose(fp);return size;
}
​
//  返回指针类型 返回NULL/0xffffffff表示失败,malloc、mmap
Node* query_list(Node* head,TYPE data)
{for(Node* n=head->next; n; n=n->next){if(n->data == data)return n;}return NULL;
}
​
//  返回0表示成功,非零表示失败 main、fseek
​
//  永远成功的函数,printf、menu菜单函数
2、通过errno全局变量表示错误:
  • errno是一个记录系统最后一次错误代码原因的全局变量,是int类型的值,需要导入头文件 <errno.h> 通过该全局变量的值查看和调试程序错误。

  • 当调用Linux系统API函数发生异常,一般系统会自动地将本程序的errno修改一个值,不同的值表示不同的异常,可以通过该值获取和推测出程序出现了什么问题,实际编程中能找出大部分调用系统API出现的异常

  • 一般errno在程序执行成功时不会被修改,但是毕竟是一个全局变量,可能被其他人或者操作失误而修改,因此不能以errno非零就断定程序出现了异常,只能先根据其他具体条件判断出程序出现异常后,才能使用errno来确定异常的原因

#include <stdio.h>
#include <string.h>
#include <errno.h>
​
int main(int argc,const char* argv[])
{FILE* fp = fopen("xixi","r");if(NULL == fp) {   printf("fopen:%d\n",errno); printf("fopen:%s\n",strerror(errno));printf("fopen:%m\n");perror("fopen");}     fclose(fp);
}

http://www.lryc.cn/news/411964.html

相关文章:

  • 【靶场实操】sql-labs通关详解----第一节:基础注入方式(Less-1~Less-10)
  • 力扣676.实现一个魔法字典
  • ctfshow-web入门-sql注入(web171-web175)
  • 视频怎么添加音乐?分享5种视频添加音乐方法
  • 黑马JavaWeb后端案例开发(包含所有知识点!!!)
  • FPGA开发——蜂鸣器实现音乐播放器的设计
  • InnoDB存储引擎(1)
  • VMWare虚拟机共享主机的网络访问外网
  • LeetCode Easy|【415. 字符串相加】
  • RAG 革命:NVIDIA 工作站如何成为企业 AI 的秘密武器
  • 九大原则,轻松构建个人高效SOP
  • Airtest的demo实现多设备并行
  • 社区养老服务小程序的设计
  • Interceptor拦截器开发
  • 美团 AIGC产品经理面经(已拿 offer)
  • @RequestBody与@RequestParam
  • vmware上,虚机经常丢失网卡。导致无法上网。
  • git 鉴权失败
  • [C++] 容器适配器:深入理解Stack与Queue的底层原理
  • Eclipse maven 的坑
  • 多模态视觉大语言模型——LLaVA
  • 服务注册到nacos上,不能点击下线的问题处理
  • 未来3-5年,哪些工作会被AI取代
  • 鸿蒙系统开发【网络管理】
  • nginx如何处理请求
  • 换地不换IP?揭秘微博IP地址的奥秘
  • 数据库事务处理技术——故障恢复
  • Java零基础之多线程篇:性能考虑篇
  • CSP 初赛复习 :计算机网络基础
  • 【Docker应用】快速搭建Plik服务结合内网穿透无公网IP远程访问传输文件