在 Linux 系统下对常见的错误做了一个编号,每一个编号都代表着每一种不同的错误类型,当函数执行发生错误的时候,操作系统会将这个错误所对应的编号赋值给 errno 变量,每一个进程(程序)都维护了自己的 errno 变量,它是程序中的全局变量,该变量用于存储就近发生的函数执行错误编号。
描述:该函数可以将对应的 errno 转换成适合我们查看的字符串信息。
#include <string.h>
char *strerror(int errnum);

errnum:错误编号 errno。
返回值:对应错误编号的字符串描述信息。

示例代码:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <errno.h>#include <string.h>/*
#include <string.h>char *strerror(int errnum);errnum:错误编号 errno。
返回值:对应错误编号的字符串描述信息。描述 :该函数可以将对应的 errno 转换成适合我们查看的字符串信息
*/int main(void)
{int fd;/* 打开文件 */fd = open("./test_file", O_RDONLY);if (-1 == fd){printf("Error: %s\n", strerror(errno));return -1;}close(fd);return 0;
}

编译测试结果:

从打印信息可以知道,strerror 返回的字符串是"No such file or directory",所以从打印信息可知,我们就 可以很直观的知道 open 函数执行的错误原因是文件不存在!

Linux 应用编程之strerror函数相关推荐

  1. linux读取文件修改时间函数,Linux服务器编程之utime()函数修改文件存取时间

    Linux服务器编程之utime()函数修改文件存取时间 C语言utime()函数:修改文件的存取时间和更改时间 头文件: #include #include 定义函数: int utime(cons ...

  2. linux ioctl网络参数设置,Linux 网络编程之ioctl函数

    1.介绍 Linux网络程序与内核交互的方法是通过ioctl来实现的,ioctl与网络协议栈进行交互,可得到网络接口的信息,网卡设备的映射属性和配置网络接口.并且还能够查看,修改,删除ARP高速缓存的 ...

  3. Linux 应用编程之stat 函数

    Linux 下可以使用 stat 命令查看文件的属性,其实这个命令内部就是通过调用 stat()函数来获取文件属性的,stat 函数是 Linux 中的系统调用,用于获取文件相关的信息.(可通过&qu ...

  4. Linux应用编程之dup函数和dup2函数

    在 Linux 系统中,open 返回得到的文件描述符 fd 可以进行复制,复制成功之后可以得到一个新文件描述符,使用新的文件描述符和旧的文件描述符都可以对文件进行 IO 操作,复制得到的文件描述符和 ...

  5. linux网络编程之Listen函数参数介绍

    1.listen()函数介绍 listen函数使用主动连接套接口变为被连接套接口,使得一个进程可以接受其它进程的请求,从而成为一个服务器进程.在TCP服务器编程中listen函数把进程变为一个服务器, ...

  6. linux网络编程之setsockopt()函数来设置socket状态以及getsockopt函数只用总结

    1.setsockopt函数 头文件:#include <sys/types.h> #include <sys/socket.h>定义函数:int setsockopt(int ...

  7. Linux应用编程之perror函数

    调用此函数不需要传入 errno,函数内部会自己去获取 errno 变量的值,调用此函数会直接将错误提示字符 串打印出来,而不是返回字符串,除此之外还可以在输出的错误提示字符串之前加入自己的打印信息. ...

  8. linux编程之pthread_create函数

    linux编程之pthread_create函数UNIX环境创建线程函数, 具体格式: #include<pthread.h> int pthread_create(pthread_t * ...

  9. linux c编程之fcntl

    fcntl可实现对指定文件描述符的各种操作,其函数原型如下: int fcntl(int fd, int cmd, ... /* arg */ ); 其中,操作类型由cmd决定.cmd可取如下值: F ...

最新文章

  1. HDLBits 系列(0)专题目录
  2. Cocoon的sitemap详解
  3. sql java blob_JAVA和SQL关于BLOB的很大的问题?……
  4. 第六章 统计量及其抽样分布
  5. 二分(三分)+快速幂
  6. Linux命令之目录和文件操作
  7. 劝你们,千千千万不要当一个程序员!!!!!!
  8. 文件IO open 与 标准 IO fopen 的对应
  9. Swift 06.Closures
  10. 关于工厂的应用——中国工人和美国工人的问题
  11. 记录一个项目测试过程最佳实践及改进建议
  12. 从苏宁电器到卡巴斯基第28篇:难忘的三年硕士时光 VI
  13. 形态学空间格局分析(MSPA)—ArcGIS结合Guidos软件
  14. java在regedit找不到_Windows找不到文件regedit打不开注册表的解决办法
  15. macbook更新系统服务器,mac系统怎么更新_苹果笔记本系统如何更新-win7之家
  16. 验证银行卡号是否合法
  17. epub转换mobi
  18. 【LeetCode-1413】1431. 拥有最多糖果的孩子
  19. 跑步听歌用哪种耳机更合适、推荐几款听歌跑步的耳机
  20. linux 防火墙 443端口映射,linux防火墙实现端口转发、端口映射及双向通路

热门文章

  1. 小米iot业务_小米架构再调整:强化中国市场地位 提升IoT业务权重
  2. arXiv journal 2022.0311
  3. 蚂蚁金服技术出海,“暖科技”亮相世界顶尖计算机视觉CVPR大会
  4. 吊打A8X 英伟达Tegra X1性能测试出炉
  5. OpenCV——圆检测
  6. 基于asp.net193酒店客房预订网站系统-计算机毕业设计
  7. STM32CubeMX | 28 - STM32片内Flash的使用
  8. WB(白平衡) ISO(感光度) 曝光补偿 详解
  9. 在线图片处理工具:让您的图片处理更加轻松
  10. 手机信号弱,怎样增强手机信号