Man 3 Error
Contents |
error_print_progname - glibc error reporting functions SYNOPSIS top #include
Error.h C
char *filename, unsigned int linenum, const char *format, ...); extern unsigned int error_message_count; extern int error_one_per_line;
Strerror Example
extern void (*error_print_progname) (void); DESCRIPTION top error() is a general error-reporting function. It flushes stdout, and then outputs to stderr the program name,
Posix Error Codes
a colon and a space, the message specified by the printf(3)-style format string format, and, if errnum is nonzero, a second colon and a space followed by the string given by strerror(errnum). Any arguments required for format should follow format in the argument list. The output is terminated by a newline character. The program linux errno example name printed by error() is the value of the global variable program_invocation_name(3). program_invocation_name initially has the same value as main()'s argv[0]. The value of this variable can be modified to change the output of error(). If status has a nonzero value, then error() calls exit(3) to terminate the program using the given value as the exit status. The error_at_line() function is exactly the same as error(), except for the addition of the arguments filename and linenum. The output produced is as for error(), except that after the program name are written: a colon, the value of filename, a colon, and the value of linenum. The preprocessor values __LINE__ and __FILE__ may be useful when calling error_at_line(), but other values can also be used. For example, these arguments could refer to a location in an input file. If the global variable error_one_per_line is set nonzero, a sequence of error_at_line() calls with the same value of filename and linenum will result in on
errnum, char *buf, size_t buflen); /* GNU-specific */Feature Test Macro Requirements for glibc (see feature_test_macros(7)): The XSI-compliant version of strerror_r() is provided if: (_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && ! _GNU_SOURCE Otherwise, how to use errno the GNU-specific version is provided. Description The strerror() function returns a pointer errno 11 to a string that describes the error code passed in the argument errnum, possibly using the LC_MESSAGES part of the errno to string current locale to select the appropriate language. (For example, if errnum is EINVAL, the returned description will "Invalid argument".) This string must not be modified by the application, but may be modified http://man7.org/linux/man-pages/man3/error.3.html by a subsequent call to strerror(). No library function, including perror(3), will modify this string. The strerror_r() function is similar to strerror(), but is thread safe. This function is available in two versions: an XSI-compliant version specified in POSIX.1-2001 (available since glibc 2.3.4, but not POSIX-compliant until glibc 2.13), and a GNU-specific version (available since glibc 2.0). The XSI-compliant version is provided with the feature https://linux.die.net/man/3/strerror test macros settings shown in the SYNOPSIS; otherwise the GNU-specific version is provided. If no feature test macros are explicitly defined, then (since glibc 2.4) _POSIX_SOURCE is defined by default with the value 200112L, so that the XSI-compliant version of strerror_r() is provided by default. The XSI-compliant strerror_r() is preferred for portable applications. It returns the error string in the user-supplied buffer buf of length buflen. The GNU-specific strerror_r() returns a pointer to a string containing the error message. This may be either a pointer to a string that the function stores in buf, or a pointer to some (immutable) static string (in which case buf is unused). If the function stores a string in buf, then at most buflen bytes are stored (the string may be truncated if buflen is too small and errnum is unknown). The string always includes a terminating null byte. Return Value The strerror() and the GNU-specific strerror_r() functions return the appropriate error description string, or an "Unknown error nnn" message if the error number is unknown. POSIX.1-2001 and POSIX.1-2008 require that a successful call to strerror() shall leave errno unchanged, and note that, since no fu
an error to indicate what went wrong. Its value is significant only when the return value of the call indicated an error (i.e., -1 from most system calls; -1 or NULL from most library functions); https://linux.die.net/man/3/errno a function that succeeds is allowed to change errno. Valid error numbers are all nonzero; https://curl.haxx.se/libcurl/c/libcurl-errors.html errno is never set to zero by any system call or library function. For some system calls and library functions (e.g., getpriority(2)), -1 is a valid return on success. In such cases, a successful return can be distinguished from an error return by setting errno to zero before the call, and then, if the call returns a status that error codes indicates that an error may have occurred, checking to see if errno has a nonzero value. errno is defined by the ISO C standard to be a modifiable lvalue of type int, and must not be explicitly declared; errno may be a macro. errno is thread-local; setting it in one thread does not affect its value in any other thread. All the error names specified by POSIX.1 must have distinct values, with the man 3 error exception of EAGAIN and EWOULDBLOCK, which may be the same. Below is a list of the symbolic error names that are defined on Linux. Some of these are marked POSIX.1, indicating that the name is defined by POSIX.1-2001, or C99, indicating that the name is defined by C99. E2BIG Argument list too long (POSIX.1) EACCES Permission denied (POSIX.1) EADDRINUSE Address already in use (POSIX.1) EADDRNOTAVAIL Address not available (POSIX.1) EAFNOSUPPORT Address family not supported (POSIX.1) EAGAIN Resource temporarily unavailable (may be the same value as EWOULDBLOCK) (POSIX.1) EALREADY Connection already in progress (POSIX.1) EBADE Invalid exchange EBADF Bad file descriptor (POSIX.1) EBADFD File descriptor in bad state EBADMSG Bad message (POSIX.1) EBADR Invalid request descriptor EBADRQC Invalid request code EBADSLT Invalid slot EBUSY Device or resource busy (POSIX.1) ECANCELED Operation canceled (POSIX.1) ECHILD No child processes (POSIX.1) ECHRNG Channel number out of range ECOMM Communication error on send ECONNABORTED Connection aborted (POSIX.1) ECONNREFUSED Connection refused (POSIX.1) ECONNRESET Connection reset (POSIX.1) EDEADLK Resource deadlock avoided (POSIX.1) EDEADLOCK Synonym for EDEADLK EDESTADDRREQ Destination address required (POSIX.1) EDOM Mathematics argument out of domain of function (POSIX.1, C99) EDQUOT Disk quota exceeded (POSIX.1) EEXIST File exists (POSIX.1) EFAULT Bad address (POSIX.1) EFBIG File too large (POSIX.1) EHOSTDOWN Host is down EHOSTUNREACH Host is unreachable (POSIX.1) EIDRM Identifier removed (POSIX.1) EILSEQ Illegal byte seque
not all, available error codes in libcurl. Why they occur and possibly what you can do to fix the problem are also included. CURLcode Almost all "easy" interface functions return a CURLcode error code. No matter what, using the curl_easy_setopt option CURLOPT_ERRORBUFFER is a good idea as it will give you a human readable error string that may offer more details about the cause of the error than just the error code. curl_easy_strerror can be called to get an error string from a given CURLcode number. CURLcode is one of the following: CURLE_OK (0) All fine. Proceed as usual. CURLE_UNSUPPORTED_PROTOCOL (1) The URL you passed to libcurl used a protocol that this libcurl does not support. The support might be a compile-time option that you didn't use, it can be a misspelled protocol string or just a protocol libcurl has no code for. CURLE_FAILED_INIT (2) Very early initialization code failed. This is likely to be an internal error or problem, or a resource problem where something fundamental couldn't get done at init time. CURLE_URL_MALFORMAT (3) The URL was not properly formatted. CURLE_NOT_BUILT_IN (4) A requested feature, protocol or option was not found built-in in this libcurl due to a build-time decision. This means that a feature or option was not enabled or explicitly disabled when libcurl was built and in order to get it to function you have to get a rebuilt libcurl. CURLE_COULDNT_RESOLVE_PROXY (5) Couldn't resolve proxy. The given proxy host could not be resolved. CURLE_COULDNT_RESOLVE_HOST (6) Couldn't resolve host. The given remote host was not resolved. CURLE_COULDNT_CONNECT (7) Failed to connect() to host or proxy. CURLE_FTP_WEIRD_SERVER_REPLY (8) The server sent data libcurl couldn't parse. This error code is used for more than just FTP and is aliased as CURLE_WEIRD_SERVER_REPLY since 7.51.0. CURLE_REMOTE_ACCESS_DENIED (9) We were denied access to the resource given in the URL. For FTP, this occurs while trying to change to the remote directory. CURLE_FTP_ACCEPT_FAILED (10) While waiting for the server to connect back when an active FTP session is