《UNIX环境高级编程》笔记--errno是否是线程安全的?
2023-09-27 14:22:40 时间
当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是线程安全的。
相关文章
- 安全管家发布2014Q1移动安全报告 恶意软件新增37万个
- 天空卫士A轮融资成功完成 统一内容安全技术受资本市场亲睐
- hadoop学习笔记(四):HDFS文件权限,安全模式,以及整体注意点总结
- 你跟他讲无线,他给你说安全,你跟他说安全,他笑了!
- 思科报告:仅有45%的企业对其安全状况充满信心
- Web安全学习笔记之DES算法实例详解
- Web安全学习笔记之Kali配置国内软件更新源
- SpringBoot学习笔记-13:第十三章-SpringBoot 与安全
- IBM LinuxONE更新 容器安全成重要焦点
- 安全防御:数据与情报需唯“真”是问
- Spring WebFlow 远程代码执行漏洞CVE-2017-4971 绿盟科技发布安全威胁通告
- burp suite 安全测试工具 笔记
- 绿盟科技发布2014互联网金融安全报告
- django网站安全学习记录
- web安全培训笔记
- 云安全联盟发布最新IoT安全指南
- 陈怡桦:资讯安全管理,从小地方做起
- 2013年头号安全威胁出炉:移动攻击
- 《居危思危:国家安全与乡村治理》笔记
- 浅议SNMP安全、SNMP协议、网络管理学习
- 多线程编程带来的不安全问题