第1章 UNIX基础知识
来源:互联网 发布:手机短信群发软件免费 编辑:程序博客网 时间:2024/05/28 15:29
1.操作系统的定义
② 宽泛来说,是指内核和一些软件应用等
2.出错处理相关 errno 变量及:strerror和perror
在文件<errno.h>文件中定义了errno 以及可以赋予它的各个常量。这些常量都以E开头。该变量在头文件中的定义
#ifndef errno extern int errno;#endif
因为,errno可以把最后一次调用C的错误代码保留,如果最后一次调用C函数成功,则不会更改errno,所以如果你要使用之前,可以先清空errno,然后通过errno判断下面要执行的函数是否成功。另外,任何函数都不会将errno的值设置为0,而且<errno.h>中的所有常量都不为0.
把errno转换为相应文字:
1> 使用strerror函数
函数原型:char * strerror(int errno)
使用方法:fprintf(stderr, "%s", strerror(errno));
2> 使用perror函数
函数原型:void perror(const char *s)
使用说明:参数s指定的字符串是要先打印出来的信息,可以由我们自己定义,然后系统会在s字符串后加上错误原因的字符串。
下面是一个例程:
#include "apue.h"#include <errno.h>intmain(int argc, char *argv[]){ fprintf(stderr, "EACCES: %s\n", strerror(EACCES)); errno = ENOENT; perror(argv[0]); exit(0);}//编译成 a.out 文件,运行方式:./a.out输出:EACCES: Permission denied./a.out: No such file or directory
注:errno是全局变量,如果在多线程或者进程编程中,子线程想要查看errno确定自己的错误类型,可惜该errno被另一个线程更改了,这就出问题了。errno的线程/进程安全性指的就是这点,在多线程和多进程编程中,errno会变为线程或进程的私有变量。
POSIX和ISO C将errno定义为一个符号,它可以是一个包含出错编号的整数,也可以是一个返回出错编号指针的函数。
extern int *__errno_location(void);#if !defined _LIBC || defined _LIBC_REENTRANT/* When using threads, errno is a per-thread value. */ #define errno (*__errno_location ())#endif
- 第1章 unix基础知识
- 第1章 UNIX基础知识
- UNIX系统编程 第1章 基础知识
- apue 第1章 UNIX 基础知识
- UNIX环境高级编程-第1章 Unix基础知识
- UNIX环境高级编程(第1章 UNIX基础知识)
- 《UNIX环境高级编程》笔记:第1章 UNIX基础知识
- UNIX环境高级编程之第1章:UNIX基础知识
- 《UNIX环境高级编程》第1章 UNIX基础知识
- APUE阅读笔记第1章 UNIX基础知识
- 第1章:基础知识
- 第1章 基础知识
- Unix/Solaris基础知识(1)
- Chapter 1 Unix基础知识
- Unix 1 基础知识
- 1、UNIX基础知识
- 第1章 基础知识 笔记
- 第1章 网络基础知识
- 作业
- 安全渗透测试笔记------------网络踩点(fierce、lbd、maltego、netifera)
- 关于Java中数组越界问题
- HDU5113 (dp+枚举)
- 线性时间选择【递归分治法】
- 第1章 UNIX基础知识
- Android-------ListView列表中获取EditText输入的值
- 阿里对Java的编码规则
- iOS 11 正式发布!最全功能介绍 + 视频 ...
- itop4412 增加nfs 内核编译过程
- js基础-语句
- ArcGIS For JS 距离与面积量算的三种方法
- 丑数
- hdu 3018(欧拉路+并查集)