Provided by: manpages-dev_3.35-0.1ubuntu1_all bug

NAME

       perror - print a system error message

SYNOPSIS

       #include <stdio.h>

       void perror(const char *s);

       #include <errno.h>

       const char *sys_errlist[];
       int sys_nerr;
       int errno;

   Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

       sys_errlist, sys_nerr: _BSD_SOURCE

DESCRIPTION

       The  routine perror() produces a message on the standard error output, describing the last
       error encountered during a call to a system or library function.  First (if s is not  NULL
       and  *s  is  not a null byte ('\0')) the argument string s is printed, followed by a colon
       and a blank.  Then the message and a new-line.

       To be of most use, the argument string should  include  the  name  of  the  function  that
       incurred  the error.  The error number is taken from the external variable errno, which is
       set when errors occur but not cleared when successful calls are made.

       The global error list sys_errlist[] indexed by errno can  be  used  to  obtain  the  error
       message without the newline.  The largest message number provided in the table is sys_nerr
       -1.  Be careful when directly accessing this list because new error values  may  not  have
       been added to sys_errlist[].

       When  a  system  call  fails, it usually returns -1 and sets the variable errno to a value
       describing what went wrong.  (These values can  be  found  in  <errno.h>.)   Many  library
       functions  do  likewise.   The  function perror() serves to translate this error code into
       human-readable form.  Note that errno is undefined after a successful library  call:  this
       call  may  well  change  this  variable,  even  though it succeeds, for example because it
       internally used some other library function that failed.  Thus, if a failing call  is  not
       immediately followed by a call to perror(), the value of errno should be saved.

CONFORMING TO

       The  function  perror() and the external errno (see errno(3)) conform to C89, C99, 4.3BSD,
       POSIX.1-2001.  The externals sys_nerr and sys_errlist conform to BSD.

NOTES

       The externals sys_nerr and sys_errlist are defined by glibc, but in <stdio.h>.

SEE ALSO

       err(3), errno(3), error(3), strerror(3)

COLOPHON

       This page is part of release 3.35 of the Linux man-pages project.  A  description  of  the
       project,  and information about reporting bugs, can be found at http://man7.org/linux/man-
       pages/.

                                            2007-07-26                                  PERROR(3)