errno, _doserrno, _sys_errlist, and _sys_nerr
Basılı tutun hata kodlarını genel makro program yürütme ve görüntülemek için hata kodlarının dize eşdeğerlerine sırasında ayarlanır.
#define errno (*_errno()) #define _doserrno (*__doserrno()) #define _sys_errlist (__sys_errlist()) #define _sys_nerr (*__sys_nerr())
Notlar
errno ve _doserrno öğelerinin ikisi de program açılışında çalışma zamanı tarafından 0 olarak ayarlanır.errno sistem düzeyindeki bir çağrıdaki bir hatada ayarlanır.errno onu ayarlayan son çağrının değerini tuttuğundan, bu değer takip eden çağrılar tarafından değiştirilebilir.Bir hatadaki errno öğesini ayarlayan çalışma zamanı kitaplığı, takip eden errno öğesini temizlemez.Her zaman Temizle errno çağırarak _set_errno(0) hemen ayarladıktan ve hemen sonra arama denetleyin bir çağrı önce.
Bir hatada, errno öğesinin bir sistem çağrısı tarafından döndürülen hata koduyla aynı değere ayarlanması zorunlu değildir.G/ç işlemleri için _doserrno , işletim sistemi hata kodu eşdeğerlerine depolar errno kodları.Çoğu olmayan-ı/O işlemleri, değeri için _doserrno ayarlanmadı.
Her errno değeri bir hata iletisi ile ilişkili _sys_errlist , yazdırılabilir birini kullanarak perror işlevleri veya birini kullanarak bir dizesinde depolanan strerror veya strerror_s işlevleri.perror Ve strerror işlevleri kullanın _sys_errlist dizi ve _sys_nerr— öğe sayısı _sys_errlist— hata bilgilerini işlemek için.Doğrudan erişim _sys_errlist ve _sys_nerr kod güvenlik nedenleriyle kullanım dışı.Genel makro yerine, daha güvenli, işlevsel sürümlerini kullanmanızı aşağıda gösterildiği gibi öneririz:
Genel makro |
İşlevsel Eşdeğerleri |
---|---|
_doserrno |
|
errno |
|
_sys_errlist, _sys_nerr |
Kitaplık matematik yordamları, _matherr öğesini çağırarak errno öğesini ayarlar.Matematik hatalarını farklı şekilde işlemek için kendi yordamınızı _matherr başvurusunun açıklamasına göre yazın ve _matherr şeklinde adlandırın.
Tüm errno değerleri aşağıdaki tabloda önceden tanımlanmış sabitler < errno.h > olarak ve UNIX uyumlu vardır.Yalnızca ERANGE, EILSEQ ve EDOM ISO C99 standardında belirtilmiştir.
Sabit |
Sistem hatası iletisi |
Değer |
---|---|---|
EPERM |
İşleme izin verilmiyor |
1 |
ENOENT |
Böyle bir dosya ya da dizin yok |
2 |
ESRCH |
Böyle bir işlem yok |
3 |
EINTR |
Kesintiye uğramış işlev |
4 |
EIO |
G/Ç hatası |
5 |
ENXIO |
Böyle bir cihaz veya adres yok |
6 |
E2BIG |
Bağımsız değişken listesi çok uzun |
7 |
ENOEXEC |
Exec biçim hatası |
8 |
EBADF |
Hatalı dosya numarası |
9 |
ECHILD |
Üretilmiş işlem yok |
10 |
EAGAIN |
Daha fazla işlem yok veya bellek yetersiz ya da en fazla iç içe geçme düzeyine ulaşılmış |
11 |
ENOMEM |
Yeterli bellek yok |
12 |
EACCES |
İzin reddedildi |
13 |
EFAULT |
Hatalı adres |
14 |
EBUSY |
Cihaz veya kaynak meşgul |
16 |
EEXIST |
Dosya mevcut |
17 |
EXDEV |
Çapraz cihaz bağlantısı |
18 |
ENODEV |
Böyle bir cihaz yok |
19 |
ENOTDIR |
Bir dizin değil |
20 |
EISDIR |
Bir dizin |
21 |
EINVAL |
Geçersiz bağımsız değişken |
22 |
ENFILE |
Sistemde çok fazla dosya açık |
23 |
EMFILE |
Çok fazla dosya açık |
24 |
ENOTTY |
Uygun olmayan G/Ç denetimi işlemi |
25 |
EFBIG |
Dosya çok büyük |
27 |
ENOSPC |
Cihazda alan kalmadı |
28 |
ESPIPE |
Geçersiz arama |
29 |
EROFS |
Salt okunur dosya sistemi |
30 |
EMLINK |
Çok fazla bağlantı |
31 |
EPIPE |
Kesik kanal |
32 |
EDOM |
Matematik bağımsız değişkeni |
33 |
ERANGE |
Sonuç çok büyük |
34 |
EDEADLK |
Kaynak kilitlenmesi oluşabilir |
36 |
EDEADLOCK |
Önceki Microsoft C sürümleriyle uyumluluk için EDEADLK aynı |
36 |
ENAMETOOLONG |
Dosya adı çok uzun |
38 |
ENOLCK |
Kullanılabilir kilit yok |
39 |
ENOSYS |
İşlev desteklenmiyor |
40 |
ENOTEMPTY |
Dizin boş değil |
41 |
EILSEQ |
Geçersiz bayt dizisi |
42 |
STRUNCATE |
Dize kesildi |
80 |
Gereksinimler
Genel makro |
Gerekli başlık |
İsteğe bağlı üstbilgi |
---|---|---|
errno |
< errno.h > veya < stdlib.h > < cerrno > veya < cstdlib > (C++) |
|
_doserrno, _sys_errlist, _sys_nerr |
< stdlib.h > < cstdlib > (C++) |
< errno.h >, < cerrno > (C++) |
_doserrno, _sys_errlist, Ve _sys_nerr makro olan Microsoft uzantıları.Uyumluluk hakkında daha fazla bilgi için bkz. Uyumluluk.
Ayrıca bkz.
Başvuru
strerror, _strerror, _wcserror, __wcserror