《UNIX环境高级编程》笔记--errno是否是线程安全的?
来源:互联网 发布:经济数据分析论文 编辑:程序博客网 时间:2024/06/08 14:50
当UNIX函数出错时,常常返回一个负数,而且整形变量errno通常被设置为含有附加信息的一个值,例如,open函数如成功,返回 一个非负文件描述符,如果出错就返回-1,在open出错时,有大约15种不同的errno值(文件不存在,权限问题等)。某些函数并不返回负数而是使用另一种约定。例如,返回一个指向对象指针的大多数函数,在出错时,将返回一个null指针。
文件<errno.h>中定义了符号errno以及可以赋予它的各种常量,这些常量都以字符E开头。
POSIX和ISO C将errno定义为这样一个符号,它扩展成为一个可修改的整形左值(lvalue),这可以是包含出错编号的一个整数,或者是一个返回出错编号指针的函数,以前使用的定义是:
extern int errno
但是在支持多线程的环境中,多个线程共享进程地址空间,每个线程都有属于它自己的局部errno以避免一个线程干扰另一个线程。例如linux支持多线程存取errno,将其定义为:
extern int *__errno_location(void);
#define errno (*__errno_location())
所以在linux中errno是线程安全的。
- 《UNIX环境高级编程》笔记--errno是否是线程安全的?
- 《UNIX环境高级编程》笔记1--errno是否是线程安全的?
- 《UNIX环境高级编程》笔记--线程属性
- UNIX环境高级编程笔记之线程
- 《UNIX环境高级编程》笔记--线程的同步
- 《UNIX环境高级编程》笔记--线程的取消选项
- 《UNIX环境高级编程》笔记--线程的取消选项
- [Unix环境高级编程] 线程
- unix环境高级编程---线程
- 《UNIX环境高级编程》的笔记
- Unix环境高级编程学习笔记(八) 线程同步
- unix环境高级编程APUE学习笔记(15)-线程同步
- 《UNIX环境高级编程》笔记--线程私有数据
- 《UNIX环境高级编程》笔记--线程和fork
- 《UNIX环境高级编程》笔记-线程和信号
- UNIX高级环境编程笔记线程间同步
- unix环境高级编程(阅读笔记)----线程同步
- UNIX环境高级编程(阅读笔记)——线程属性
- 【discuz3.x】discuz3.x后台【管理中心】->【全局】设置中表单名汇总
- android AsyncTask介绍
- Eclipse Hadoop插件使用
- c中的内存对齐
- C++一些注意点之指针成员管理
- 《UNIX环境高级编程》笔记--errno是否是线程安全的?
- mvn jetty:run出现OutOfMemoryError: PermGen space的处理
- BFS+状态压缩 hdu-1429 胜利大逃亡(续)
- FusionCharts数值格局设置
- cpu高分析方法
- vibe前景提取方法学习
- MD5 算法描述
- Log4Net使用详解(续)
- 【转载】BootLoader