ayrıntılı here gibi bir hata açıklaması dize döndürür strerror
C fonksiyonu. Örnek dizestrerror açıklama dizeleri
No such file or directory
Bu dizeler nerede tanımlanmış sorudur? Başlık dosyalarına baktım ve hiçbir şey görmedim.
ayrıntılı here gibi bir hata açıklaması dize döndürür strerror
C fonksiyonu. Örnek dizestrerror açıklama dizeleri
No such file or directory
Bu dizeler nerede tanımlanmış sorudur? Başlık dosyalarına baktım ve hiçbir şey görmedim.
C kütüphanesinde, geleneksel olarak, sys_errlist
sys_nerr
adı verilen küresel bir dizide, en azından Unix sistemlerinde tanımlanmıştır. strerror
önce yazılmış eski programların, standardize edilmiş Çünkü
, gerçekten perror
veya strerror
içi haricinde erişmek olmamalıdır olsa (hatta geriye dönük uyumluluk için, modern, GNU/Linux ve Mac OS X hâlâ sunuluyor, doğrudan bu diziyi erişebilir).
Örn, burada Mac OS X 10.8.2 definition of sys_errlist
bu. Eğer libc uygulanmasına bağlıdır görebileceğiniz gibi
Genellikle olasılıkla tanımlanmış ve C Çalışma Zamanı Kitaplığı, örneğin gömülü çoğu unix benzeri sistemlerde libc.
En azından tipik bir kitaplık içinde, genellikle strerror.o
(veya .obj
, vb.) Bağlanan bir nesne dosyasında olurlar. Bakmak için yeterince dikkatli olursanız, kaynak kodun kütüphaneye kaydırılması, onları çevirmelidir.
hata iletileri içeren başlık dosyası errmsg.h
00012 const char *const sys_errlist[] = {
00013 "Operation succeeded", /* 0 */
00014 "Invalid argument", /* EINVAL */
00015 "Bad memory address", /* EFAULT */
00016 "String too long", /* ENAMETOOLONG */
00017 "Out of memory", /* ENOMEM */
00018 "Input/output error", /* EIO */
00019 "No such file or directory", /* ENOENT */
00020 "Not a directory", /* ENOTDIR */
00021 "Is a directory", /* EISDIR */
00022 "File or object exists", /* EEXIST */
00023 "Cross-device link", /* EXDEV */
00024 "Try again later", /* EAGAIN */
00025 "Illegal seek", /* ESPIPE */
00026 "Unimplemented feature", /* EUNIMP */
00027 "Device not available", /* ENXIO */
00028 "No such device", /* ENODEV */
00029 "Device or resource busy", /* EBUSY */
00030 "Invalid/inappropriate ioctl",/* EIOCTL (ENOTTY in Unix) */
00031 "Directory not empty", /* ENOTEMPTY */
00032 "Result too large", /* ERANGE */
00033 "No space left on device", /* ENOSPC */
00034 "Too many open files", /* EMFILE */
00035 "Too many open files in system",/* ENFILE */
00036 "No such system call", /* ENOSYS */
00037 "File is not executable", /* ENOEXEC */
00038 "Argument list too long", /* E2BIG */
00039 "Bad file number", /* EBADF */
00040 };
adlandırılır. Ancak genel fikir aynıdır: bazı dizi, bir hata numarasından 1024 baytlık bir dize uzunluğu uzunluğuna kadar bir eşlemeyi içerir.
diğer uygulamalar:
konu dışı .. İkinci bağlantı uygulanması ne kadar karmaşık. – Jack
@jack alot +10000 – 0x90
Son bağlantı haricinde, tüm bilgilerinizin öğrencilerin işletim sisteminden geldiği görülmektedir. –