=====Gestion des erreurs===== ====errno==== ===Liste=== Source [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/include/uapi/asm-generic/errno-base.h|errno-base.h]] ({{ :lang:c:noyaulinux:errno-base.h |archive 23/09/2018}}), [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/include/uapi/asm-generic/errno.h|errno.h]] ({{ :lang:c:noyaulinux:errno.h |archive 23/09/2018}}) ^ Abbréviation ^ Code ^ Description ^ |''EEPERM''|1|Operation not permitted| |''EENOENT''|2|No such file or directory| |''EESRCH''|3|No such process| |''EEINTR''|4|Interrupted system call| |''EEIO''|5|I/O error| |''EENXIO''|6|No such device or address| |''EE2BIG''|7|Argument list too long| |''EENOEXEC''|8|Exec format error| |''EEBADF''|9|Bad file number| |''EECHILD''|10|No child processes| |''EEAGAIN''|11|Try again| |''EEWOULDBLOCK''|11|Operation would block| |''EENOMEM''|12|Out of memory| |''EEACCES''|13|Permission denied| |''EEFAULT''|14|Bad address| |''EENOTBLK''|15|Block device required| |''EEBUSY''|16|Device or resource busy| |''EEEXIST''|17|File exists| |''EEXDEV''|18|Cross-device link| |''EENODEV''|19|No such device| |''EENOTDIR''|20|Not a directory| |''EEISDIR''|21|Is a directory| |''EEINVAL''|22|Invalid argument| |''EENFILE''|23|File table overflow| |''EEMFILE''|24|Too many open files| |''EENOTTY''|25|Not a typewriter| |''EETXTBSY''|26|Text file busy| |''EEFBIG''|27|File too large| |''EENOSPC''|28|No space left on device| |''EESPIPE''|29|Illegal seek| |''EEROFS''|30|Read-only file system| |''EEMLINK''|31|Too many links| |''EEPIPE''|32|Broken pipe| |''EEDOM''|33|Math argument out of domain of func| |''EERANGE''|34|Math result not representable| |''EEDEADLK''|35|Resource deadlock would occur| |''EEDEADLOCK''|35|Resource deadlock would occur| |''EENAMETOOLONG''|36|File name too long| |''EENOLCK''|37|No record locks available| |''EENOSYS''|38|Invalid system call number| |''EENOTEMPTY''|39|Directory not empty| |''EELOOP''|40|Too many symbolic links encountered| |''EENOMSG''|42|No message of desired type| |''EEIDRM''|43|Identifier removed| |''EECHRNG''|44|Channel number out of range| |''EEL2NSYNC''|45|Level 2 not synchronized| |''EEL3HLT''|46|Level 3 halted| |''EEL3RST''|47|Level 3 reset| |''EELNRNG''|48|Link number out of range| |''EEUNATCH''|49|Protocol driver not attached| |''EENOCSI''|50|No CSI structure available| |''EEL2HLT''|51|Level 2 halted| |''EEBADE''|52|Invalid exchange| |''EEBADR''|53|Invalid request descriptor| |''EEXFULL''|54|Exchange full| |''EENOANO''|55|No anode| |''EEBADRQC''|56|Invalid request code| |''EEBADSLT''|57|Invalid slot| |''EEBFONT''|59|Bad font file format| |''EENOSTR''|60|Device not a stream| |''EENODATA''|61|No data available| |''EETIME''|62|Timer expired| |''EENOSR''|63|Out of streams resources| |''EENONET''|64|Machine is not on the network| |''EENOPKG''|65|Package not installed| |''EEREMOTE''|66|Object is remote| |''EENOLINK''|67|Link has been severed| |''EEADV''|68|Advertise error| |''EESRMNT''|69|Srmount error| |''EECOMM''|70|Communication error on send| |''EEPROTO''|71|Protocol error| |''EEMULTIHOP''|72|Multihop attempted| |''EEDOTDOT''|73|RFS specific error| |''EEBADMSG''|74|Not a data message| |''EEOVERFLOW''|75|Value too large for defined data type| |''EENOTUNIQ''|76|Name not unique on network| |''EEBADFD''|77|File descriptor in bad state| |''EEREMCHG''|78|Remote address changed| |''EELIBACC''|79|Can not access a needed shared library| |''EELIBBAD''|80|Accessing a corrupted shared library| |''EELIBSCN''|81|.lib section in a.out corrupted| |''EELIBMAX''|82|Attempting to link in too many shared libraries| |''EELIBEXEC''|83|Cannot exec a shared library directly| |''EEILSEQ''|84|Illegal byte sequence| |''EERESTART''|85|Interrupted system call should be restarted| |''EESTRPIPE''|86|Streams pipe error| |''EEUSERS''|87|Too many users| |''EENOTSOCK''|88|Socket operation on non-socket| |''EEDESTADDRREQ''|89|Destination address required| |''EEMSGSIZE''|90|Message too long| |''EEPROTOTYPE''|91|Protocol wrong type for socket| |''EENOPROTOOPT''|92|Protocol not available| |''EEPROTONOSUPPORT''|93|Protocol not supported| |''EESOCKTNOSUPPORT''|94|Socket type not supported| |''EEOPNOTSUPP''|95|Operation not supported on transport endpoint| |''EEPFNOSUPPORT''|96|Protocol family not supported| |''EEAFNOSUPPORT''|97|Address family not supported by protocol| |''EEADDRINUSE''|98|Address already in use| |''EEADDRNOTAVAIL''|99|Cannot assign requested address| |''EENETDOWN''|100|Network is down| |''EENETUNREACH''|101|Network is unreachable| |''EENETRESET''|102|Network dropped connection because of reset| |''EECONNABORTED''|103|Software caused connection abort| |''EECONNRESET''|104|Connection reset by peer| |''EENOBUFS''|105|No buffer space available| |''EEISCONN''|106|Transport endpoint is already connected| |''EENOTCONN''|107|Transport endpoint is not connected| |''EESHUTDOWN''|108|Cannot send after transport endpoint shutdown| |''EETOOMANYREFS''|109|Too many references: cannot splice| |''EETIMEDOUT''|110|Connection timed out| |''EECONNREFUSED''|111|Connection refused| |''EEHOSTDOWN''|112|Host is down| |''EEHOSTUNREACH''|113|No route to host| |''EEALREADY''|114|Operation already in progress| |''EEINPROGRESS''|115|Operation now in progress| |''EESTALE''|116|Stale file handle| |''EEUCLEAN''|117|Structure needs cleaning| |''EENOTNAM''|118|Not a XENIX named type file| |''EENAVAIL''|119|No XENIX semaphores available| |''EEISNAM''|120|Is a named type file| |''EEREMOTEIO''|121|Remote I/O error| |''EEDQUOT''|122|Quota exceeded| |''EENOMEDIUM''|123|No medium found| |''EEMEDIUMTYPE''|124|Wrong medium type| |''EECANCELED''|125|Operation Canceled| |''EENOKEY''|126|Required key not available| |''EEKEYEXPIRED''|127|Key has expired| |''EEKEYREVOKED''|128|Key has been revoked| |''EEKEYREJECTED''|129|Key was rejected by service| |''EEOWNERDEAD''|130|Owner died| |''EENOTRECOVERABLE''|131|State not recoverable| |''EERFKILL''|132|Operation not possible due to RF-kill| |''EEHWPOISON''|133|Memory page has hardware error| ===EINTR (Interrupted system call)=== Liste non exhaustive des fonctions pouvant être interrompues avec un code d'erreur ''EINTR'' : ''select'', ''accept4'', ''poll'', ''recv'', ''read'', ''write''. Ces fonctions précédentes renvoient -1 en cas d'échec et la variable ''errno'' (thread-safe) renvoie ''EINTR'' en cas d'interruption. La méthode simple est de faire une boucle autour de l'appel avec la condition ''retval == -1 && errno == EINTR''. La méthode complète est de savoir d'où vient cette interruption système : [[http://250bpm.com/blog:12|EINTR and What It Is Good For]] {{ :lang:c:noyaulinux:eintr_and_what_it_is_good_for_-_250bpm_2019-10-17_19_28_46_.html |Archive du 05/11/2012 le 17/10/2019}}