Section: Funciones de Biblioteca (3)
Updated: 5 Marzo 1998
Index Return to Main
Contents
perror - muestra un mensaje correspondiente a un error del sistema
void perror(const char *s);
#include <errno.h>
const char *sys_errlist[];
int sys_nerr;
La rutina perror() produce un mensaje que va a la salida estándar de errores, describiendo el último error encontrado durante una llamada al sistema o a ciertas funciones de biblioteca. La cadena de caracteres s que se pasa como argumento, se muestra primero, luego un signo de dos puntos y un espacio en blanco; por último, el mensaje y un salto de línea. Para ser de más utilidad, la cadena de caracteres pasada como argumento debería incluir el nombre de la función que incurrió en el error. El código del error se toma de la variable externa errno, que toma un valor cuando ocurre un error pero no es puesta a cero en una llamada no errónea.
Puede utilizarse la lista global de errores sys_errlist[], indexada por errno, para obtener el mensaje del error sin el salto de línea. El número más alto de mensaje proporcionado en la tabla es sys_nerr -1. Tenga cuidado cuando acceda directamente a esta lista porque puede que no se hayan añadido aún nuevos valores de error a sys_errlist[].
Cuando una llamada al sistema falla, normalmente devuelve -1 y pone en la variable errno un valor que describe qué fue mal. (Estos valores pueden encontrarse en <errno.h>.) Muchas funciones de biblioteca también hacen esto. La función perror() sirve para traducir este código de error a una forma que los humanos puedan entender. Observe que errno tiene un valor sin definir tras una llamada exitosa: esta llamada podría muy bien cambiar incluso el valor de esta variable, a pesar de haber acabado bien, por ejemplo porque internamente empleara alguna otra función de biblioteca que hubiera fallado. Así, si una llamada fallida no es seguida inmediatamente por una llamada a perror, el valor de errno debe guardarse.
C ANSI, BSD 4.3, POSIX, X/OPEN
(3)
This document was created by man2html, using
the manual pages.
Time: 06:16:22 GMT, January 22, 2005