当前位置:网站首页>perror()函数的使用

perror()函数的使用

2021-06-23 22:37:45 茗若然

        perror()函数的功能是打印一个系统错误信息。
        perror()函数在Linux系统中属于库函数,在头文件中有如下定义:


        #include <stdio.h>
        void perror(const char *s);

 
perror()函数的使用细节
        当程序的当前函数(这类函数包括系统函数和库函数)出现错误,会将错误值保存在errno这个全局变量中,然后当程序执行到perror()函数的时候,会先打印参数s中的字符串,接着打印一个冒号,和errno值对应的错误描述字符串。因此在使用perror()函数的时候也要引用头文件errno.h,因为errno这个全局变量定义在这个头文件中。
这其中也隐含这一个使用技巧,就是s参数字符串应该包含导致错误的函数的名称。这样在打印错误信息的时候,会使定位的错误位置更加准确。
同时也要注意一个问题,就是在函数执行成功的时候,不要调用perror()函数,因为在函数成功执行的时候errno是未定义的变量,即便打印出错误信息,也是它在内部使用了其他失败的库函数。例如:

1 int * p = NULL;
2 p = (int *)malloc(sizeof(int));
3 if(p == NULL)
4 {
5     perror("malloc error , no memory");
6     exit(1);
7 }

        上述程序是申请动态内存,如果申请失败即p指针为空,则调用perror()函数打印错误信息。千万不要在p!=NULL的时候调用perror()函数,此时malloc()函数执行成功,已经申请到内存并返回指针给p,p不为空。

        errno的错误字符串是英文缩写,若要查阅具体的错误可参阅《errno的使用》。

版权声明
本文为[茗若然]所创,转载请带上原文链接,感谢
https://www.cnblogs.com/mingruoran/p/14924738.html