线程创建的检测strerror与perror

    xiaoxiao2025-09-11  74

    在线程的创建中,检测创建是否成功为什么使用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; }}
    最新回复(0)