出错处理函数

当调用系统调用时,若系统调用出错,则系统会修改errno变量的值,errno变量为一个int型的全局变量,在头文件/usr/include/errno.h中被引用性声明,估计定义是在库文件中。当出现不同类型的错误时,会给errno变量赋予不同的值,这些不同的值在errno.h中被定义了。

Linux系统提供两个出错处理函数,perror和strerror函数。这两个函数必须在系统调用会影响errno的值的前提下才能使用。

perror(const char *s)函数的功能就是根据不同errno值的类型,先向标准错误输出中打印出字符串s,再打印出相应的错误信息。格式是“字符串s + 冒号+ 空格+错误信息”。

======================================================

除了perror函数之外,还有一个strerror函数用作提示错误输出。

char *strerror(int errorno)函数返回一个指向字符串的字符指针,该字符串是errorno所对应的错误提示。可以使用以下语句对其进行输出:

printf("%s", strerror(errno));

时间: 2024-10-14 05:09:05

出错处理函数的相关文章

程序的链接和装入及Linux下动态链接的实现

http://www.ibm.com/developerworks/cn/linux/l-dynlink/ 程序的链接和装入及Linux下动态链接的实现 程序的链接和装入存在着多种方法,而如今最为流行的当属动态链接.动态装入方法.本文首先回顾了链接器和装入器的基本工作原理及这一技术的发展历史,然后通过实际的例子剖析了Linux系统下动态链接的实现.了解底层关键技术的实现细节对系统分析和设计人员无疑是必须的,尤其当我们在面对实时系统,需要对程序执行时的时空效率有着精确的度量和把握时,这种知识更显重

socket IPC(本地套接字 domain)

1.简介 socket API原本是为网络通讯设计的,但后来在socket的框架上发展出一种IPC机制,就是UNIX Domain Socket.虽然网络socket也可用于同一台主机的进程间通讯(通过loopback地址127.0.0.1),但是UNIX Domain Socket用于IPC更有效率:不需要经过网络协议栈,不需要打包拆包.计算校验和.维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进程.这是因为,IPC机制本质上是可靠的通讯,而网络协议是为不可靠的通讯设计的.UNIX

【转】libevent和基于libevent的网络编程

转自: http://www.cnblogs.com/nearmeng/p/4043548.html 1 libevent介绍和安装 介绍 libevent是一个轻量级的基于事件驱动的高性能的开源网络库,并且支持多个平台,对多个平台的I/O复用技术进行了封装,当我们编译库的代码时,编译的脚本将会根据OS支持的处理事件机制,来编译相应的代码,从而在libevent接口上保持一致. 在当前的服务器上,面对的主要问题就是要能处理大量的连接.而通过libevent这个网络库,我们就可以调用它的API来很

解决UNIX环境高级变成中找不到apue.h问题

转自:http://www.xitongbuluo.com/jiaocheng/17264.html 在http://download.csdn.net/detail/lincoln_2012/7680675 下载apue.h文件 /**************************************************************************************************************/ apue.h文件是书中自己写的一个文件,包

一个IO的传奇一生(14)—— Linux中的MD开源RAID(2)

续<一个IO的传奇一生(13)-- Linux中的MD开源RAID(1)> 4.6  make_request函数说明 函数原型:static int make_request (request_queue_t *q, struct bio * bi) 参数:*q,请求队列 *bi,IO请求数据结构 各个RAID Level的IO请求函数相同,但是他们的实现是不一样的.RAID1中make_request()函数的主要功能是将上层的bio分发到底层驱动中去,但是,RAID5中的函数并没有实现这

apue配置问题

<UNIX环境高级编程>中apue.h的问题 运行程序清单1-1(列出一个目录中的所有文件) 提示 "错误:apue.h:没有那个文件或目录". 很是受打击,果断google解决之. apue.h是作者自定义的一个头文件,包括程序所需的常用头文件及出错处理函数.所以因该将它放入系统头文件中(Linux下是 /usr/include),这样gcc编译器就可以找到它了. 去http://www.apuebook.com/下载src.tar.gz包,然后解压至电脑中的某个目录,比

PHP文件操作(转)

一 .解析路径: 1 获得文件名:basename();给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件名.如果文件名是以 suffix 结束的,那这一部分也会被去掉.eg: $path = "/home/httpd/html/index.php";$file = basename($path,".php"); // $file is set to "index" 2 得到目录部分:dirname();给出一个包含有指向一个文件的

[UNIX环境高级编程](第三版)中apue.h的问题

编译 gcc -g myls.c 时,报错 ‘找不到头文件 apue.h’ apue.h是作者自己写的一个文件,系统不自带.其中包含了常用的头文件,以及出错处理函数的定义. 需要到 http://www.apuebook.com/code3e.html(这本书的官网) 下载  ‘src.3e.tar.gz’ 进行解压(最新版产生的目录apue.3e),并执行安装 tar -zvx -f src.3e.tar.gz 进入目录apue.3e,执行安装 ./configure make make in

led设备驱动(s3c_led.c)

s3c_led.c分析:http://blog.csdn.net/hurry_liu/article/details/8770206 1,注册设备号int register_chrdev_region(dev_t from, unsigned count, const char *name)动态分配设备号 int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count, const char *name) // 无法再