Content-type: text/html
errno - Returns error condition value
#include <errno.h>
The errno external variable contains the most recent error condition set by a function. The symbolic values for errno are listed in the intro reference page and in the ERRORS section of the individual reference pages for each function.
The exec() functions set errno to
a value of 0 (zero) after successful completion. Typically, other functions
only set errno to a nonzero value.
The following program uses the value of errno to determine why the requested file could not be opened. If errno has one of the two tested values, the program prints an appropriate message; otherwise, the program uses the error() function to print out the appropriate message. This program does not have to set errno to a value of 0 (zero) because errno is tested only if the open() function has failed.
#include <errno.h> #include <stdio.h> #include <string.h> #include <fcntl.h> #include <sys/stat.h> #include <sys/types.h> #define SLENGTH 80
main()
{
char filespec[SLENGTH], *eol;
int opret;
while (TRUE) {
printf("Enter file to be checked: ");
fgets(filespec, SLENGTH, stdin);
if ((eol = strchr(filespec, '\n')) != NULL) {
*eol = '\0'; /* Replace newline with null */
if (*filespec == '\0') return; /* exit program */
opret = open(filespec,O_RDONLY,0);
if (opret > 0)
printf("%s: File exists\n",filespec);
else if (errno == ENOENT)
printf("%s: File does not exist\n",filespec);
else if (errno == ENOTDIR)
printf("%s: Prefix in path is not a directory\n",
filespec);
else
perror(filespec);
} else /* Line entered too long */
printf("Line entered is too long\n");
}
}
To ensure that your programs are portable, you should not explicitly
declare errno to be an extern int in your
program. You should rely on the type int declaration in
the <errno.h> include file.
Full use.
Functions: intro(2), perror(3), strerror(3)