Provided by: manpages-dev_3.54-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[].   The  use  of
       sys_errlist[] is nowadays deprecated.

       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.54 of the Linux man-pages project.  A description of the project, and
       information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/.

                                                   2012-04-17                                          PERROR(3)