1、前言
stdin:标准输入 //键盘输入的内容会存在这个文件里
stdout:标准输出 //屏幕输出的内容会存在这个文件里
stderr:标准错误 //屏幕输出的错误信息会存在这个文件里,与正常输出到stdout的信息分开
2、perror
#include <stdlib.h>
void perror(const char*s);
将上一个函数发生的错误原因输出到标准错误中stderr;s为用户的提示信息,会先被打印出来,后面会紧跟着错误原因字符串,此错误原因依照全局变量errno的值来决定要输出的字符串。
在库函数中有个errno变量,每个errno值对应着以字符串表示的错误类型。陶醉的花卷调用”某些”函数出错时,该函数已经重新设置了errno的值。perror函数只是将你输入的一些信息和errno所对应的错误一起输出。
#include <stdlib.h>int main(int argc, char *argv[]){ FILE *fp; fp=fopen(“/root/myfile”,”r+”); if(NULL==fp) { perror(“/root/myfile”); } return 0;}
会发现: void perror(const char*s);s是用户要输出的提示信息,perror会在后面添加 :错误原因
上一个函数即:fopen
3、errno
#include <errno.h>
errno是一个全局变量,不同的数值表示不同的出错原因;当linux系统调用api失败时,根据errno分析原因。
#include <stdlib.h>#include <string.h>int main(int argc, char *argv[]){ FILE *fp; fp=fopen(“/root/myfile”,”r+”); if(NULL==fp) { perror(“/root/myfile”); printf(“errno=%d\n”,errno); char * mesg = strerror(errno); printf(“/root/myfile:%s\n”,mesg); } return 0;}
总结:perror和打印输出strerror(errno)的效果是一样的。