perror和strerror的问题

来源:互联网 发布:网络舆论引导途径 编辑:程序博客网 时间:2024/05/16 17:31
perror()是把一个函数发生错误的原因输出到标准出错设备中(stderr);库函数中有errno变量每一个errno的值都会对应一个错误类型 在输出的时候perrno函数只会把你输出的信息好errno所对应的错误信息一起输出  void perrno( const char *s );int main( void ){/*        pid_t pid;        pid = fork( );        if( pid < 0 )                perror("pid");         printf("%c\n",'d');        return 0;*/        FILE *fp = NULL;        fp = fopen( "./abcdef" ,"r" );        if( fp == NULL )                perror("./abcdef");        printf("OK\n");}因为没有 "./abcdef"这个文件所以会输出./abcdef: No such file or directory因为程序不会终止 所以还会输出OK如果想终止 则可以在perror()后面添加exit0)函数;----------------------------------------------strerror  char *strerror(int errnum);通过标准错误的符号 获取到错误的描述字符串 以单纯的错误标志转为字符串描述输出到标准输出流 stdout中#include <stdio.h>#include <string.h>#include <errno.h>#include <stdlib.h>#define ERR_EXIT(m) do{\        fprintf(stdout,"[%s] [%d] %s %s\n",__FILE__,__LINE__,m,strerror(errno));\        exit(0);\}while(0)int main( void ){        FILE *fp = NULL;        fp = fopen( "./abcdef","r" );        if( fp == NULL )                ERR_EXIT("./abcdef");        return 0;}------------------------------------------strerror(errnum) 就是要把错误的数字当参数转化为相应的字符串这就是这两个函数的区别 都是不中断函数!
0 0