<< Prev | Beej's Guide to Network Programming | Next >> |
Print an error as a human-readable string
#include <stdio.h> #include <string.h> // for strerror() void perror(const char *s); char *strerror(int errnum);
Since so many functions return -1 on error and set the value of the variable errno to be some number, it would sure be nice if you could easily print that in a form that made sense to you.
Mercifully, perror() does that. If you want more description to be printed before the error, you can point the parameter s to it (or you can leave s as NULL and nothing additional will be printed.)
In a nutshell, this function takes errno values, like ECONNRESET, and prints them nicely, like "Connection reset by peer."
The function strerror() is very similar to perror(), except it returns a pointer to the error message string for a given value (you usually pass in the variable errno.)
strerror() returns a pointer to the error message string.
int s; s = socket(PF_INET, SOCK_STREAM, 0); if (s == -1) { // some error has occurred // prints "socket error: " + the error message: perror("socket error"); } // similarly: if (listen(s, 10) == -1) { // this prints "an error: " + the error message from errno: printf("an error: %s\n", strerror(errno)); }
<< Prev | Beej's Guide to Network Programming | Next >> |