Ale*_*x F 3 c linux error-handling
在使用CRT函数(如fopen)之后,我可以使用strerror来获取errno值的文本表示.如果我使用开放的 Linux系统调用而不是CRT函数,它也会在失败时设置errno值.将strerror应用于此errno值是否正确?如果没有,是否有一些Linux系统调用,它与strerror相同?
是的,您的代码可能类似于(未经测试):
#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
}
Run Code Online (Sandbox Code Playgroud)
是的
是的
里面有perror
if (-1 == open(....))
{
perror("Could not open input file");
exit(255)
}
Run Code Online (Sandbox Code Playgroud)