errno,strerror和Linux系统调用

在使用CRT函数(如fopen)后,我可以使用strerror来获取errno值的文本表示。 如果我使用开放的 Linux系统调用而不是CRT函数,它也会在失败时设置errno值。 这是正确的应用strerror这个errno值? 如果没有,是否有一些Linux系统调用,这跟strerror一样?

Solutions Collecting From Web of "errno,strerror和Linux系统调用"

在那里是有perror

 if (-1 == open(....)) { perror("Could not open input file"); exit(255) } 

是的,你的代码可能是这样的(未经测试):

  #include <stdio.h> #include <errno.h> #include <string.h> // declares: char *strerror(int errnum); FILE * my_fopen ( char *path_to_file, char *mode ) { FILE *fp; char *errmsg; if ( fp = fopen( path_to_file, mode )) { errmsg = strerror( errno ); // fopen( ) failed, fp is set to NULL printf( "%s %s\n", errmsg, path_to_file ); } else { // fopen( ) succeeded ... } return fp; // return NULL (failed) or open file * on success }