资料出处:http://hi.baidu.com/dingcaiwei/item/460a80326880eff4a9842876
strerror与strerror_r()
#include <>char *strerror(int errnum);
int strerror_r(int errnum, char *buf, size_t n);
对于函数strerror_r,第一个参数errnum是错误代码,第二个参数buf是用户提供的存储错误描述的缓存,第三个参数n是缓存的大小。
strerror()不是线程安全的,strerror_r()是线程安全的。
在单线程的程序中,errno是全局变量。然后,在多线程程序中,errno会按照每个线程来储存,因此具有线程安全性。