博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux C语言错误处理
阅读量:4139 次
发布时间:2019-05-25

本文共 1249 字,大约阅读时间需要 4 分钟。

<stdio.h>中定义了perror(),perror是在标准输出上输出msg字符串,然后再后面加上:错误语段(这个错误语段对应这时的errno)

<string.h>中定义了strerror(),strerror是把一个错误numb作为参数,然后返回错误numb所对应的错误语段,一般用errno。

#include 
#include
#include
#include
#include
int main(int argc, char* argv[]){int i=open("/usr/src/s.t",0);perror(argv[0]);printf(strerror(errno));return 0;}执行结果:]$./test ./test: No such file or directoryNo such file or directory

    <assert.h>中支持assert()函数,注意,assert()检查发现条件不成立时调用abort()终止程序执行,应用程序没有机会做清除工作。assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。

    C标准定义了__LINE__和__FILE__宏,GNU C扩展中定义了__FUNCTION__宏,可以用来实现代码跟踪调试。这是三个非常有用的全局变量,当程序需要输出一些内容,而又想知道输出的内容是在哪里输出的时候,这几个全局变量就派上用场了。__FILE__,__FUNCTION__, __LINE__ 从名字可以直接看出来了,对应的:代码文件名, 函数名, 行号。

    <errno.h>中定义了errno,注意没有函数会将errno清零,所以在调用可能设置errno的函数之前先将errno清零。但是errno是一个数字,代表的具体含义还要到errno.h中去阅读宏定义,而每次查阅是一件很繁琐的事情。所以经常char *strerror(int errno)将错误代码转换为字符串错误信息,可以将该字符串和其它的信息组合输出到用户界面。

    <stdlib.h>中定义了abort()、exit()和atexit()函数。

    函数abort()将导致程序异常终止,在终止前程序没有机会执行atexit()登记的函数,也没有计划执行一些常规的清除工作。同时,abort()还会产生core dump,如果没有ulimit限制的话。

    函数exit()和abort()类似,但它在完成清理工作之后才终止程序。

    函数atexit()登记在程序正常终止时要调用的函数。

    <syslog.h>中定义了syslogd的接口,常用于系统日志。

转载地址:http://llhvi.baihongyu.com/

你可能感兴趣的文章
一个有趣的实验---tcp发送缓冲区满, 然后杀掉进程(处于FIN_WAIT1状态), 接收端是无感知的。
查看>>
用实际案例来理解netstat -nao中的Recv-Q和Send-Q
查看>>
tcp四次挥手中CLOSE_WAIT状态的最大时间是多长?
查看>>
tcp四次挥手中FIN_WAIT1状态的最大时间是多长?
查看>>
小心不可见字符组成的不可见字符串
查看>>
那一年, 我第一次在工作中用到了三次握手的分析
查看>>
什么情况下,发送端的send函数成功, 但发送端抓不到对应的网络包?------深入理解send函数
查看>>
在tcp半开连接(也就是死连接)上send数据, send函数会成功吗? 后续会怎样?
查看>>
tcp四次挥手中FIN_WAIT2状态的最大时间是多长?
查看>>
tcp四次挥手中LAST_ACK状态一般持续多久?
查看>>
socket I/O上设置超时的三种方法及其比较
查看>>
居然很少有人质疑: 2MSL的TIME_WAIT时间真的足够保证旧连接上的所有包都消失吗?
查看>>
正确理解tcp的可靠传输------其实并不100%可靠
查看>>
readn和writen函数一览------顺便说说recv函数的MSG_WAITALL参数
查看>>
聊聊tcp四次挥手中的TIME_WAIT状态存在的理由
查看>>
shutdown能做哪些close做不了的事?
查看>>
工作四年的一些经历和感悟------在扯淡的世界中尽力而为
查看>>
僵尸进程示例分析------顺便说说linux中的wait和waitpid
查看>>
linux fork多进程并发服务器模型之C/C++代码实战
查看>>
linux accept函数与三次握手没有半毛钱的关系------三次握手可能发生在调用accept函数之前
查看>>