在使用CRT函数后,我可以使用strerror来获取errno值的文本表示,例如 fopen 。如果我使用打开 Linux系统调用而不是CRT函数,它还会在失败时设置errno值。将strerror应用于此errno值是否正确?如果没有,是否有一些Linux系统调用,它与strerror相同?
答案 0 :(得分:5)
是的,您的代码可能类似于(未经测试):
#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
}
答案 1 :(得分:2)
是
是
有perror
if (-1 == open(....))
{
perror("Could not open input file");
exit(255)
}