在线程的创建中,检测创建是否成功为什么使用strerror而不是perror?
这要从perror和strerror的原理说起
在库函数中有个errno的全局变量,每个errno的值对应错误的类型。
当我们调用某些函数出错时,该函数就设置了errno的值,perror就将errno值对应的错误类型打印出来(这也是perror要紧跟着函数调用的原因);
而在另外一些函数中,函数出错并不设置errno的值,而是通过返回错误类型对应的值,来得到错误的类型,在这种情况下,我们就要使用strerror(线程就是这类)
以后我们写验证的时候,不知道用哪个,我们就man 一下这个函数,如果是第一类,是这个鬼样子的 如果是第二类
#define PERROR_CHECK(ret , error_val, fileName) { if(ret == error_val){ perror(fileName); return -1; }}
#define STRERROR_CHECK(ret, fileName) {if(ret == -1){ printf("%s:%s\n", fileName, strerror(ret)); return -1; }}