Hata Kodları
Önceki II. Oylum - Hata Bildirme Sonraki
Hata Kodları
Hata kodu makroları errno.h başlık dosyasında tanımlıdır. Hepsi tamsayı sabitlerle sonuçlanır. Bu hata kodlarının GNU sisteminde oluşmayanları için yani GNU sistemi dışındaki sistemler için olanları GNU kütüphanesinde bulunmaktadır.
int EPERM
İşleme izin verilmedi; sadece dosyanın (ya da diğer özkaynağın) ya da süreçlerin sahibinin yapabileceği işlemler.
int ENOENT
Böyle bir dosya ya da dizin yok. Sistemde bulunacağı varsayılmış bir dosya ya da dizinin bulunamadığı durum.
int ESRCH
Belirtilen süreç kimliği ile eşleşen bir süreç yok.
int EINTR
İşlev çağrısı engellendi; herhangi bir anda çağrının tamamlanmasını engelleyen bir sinyalin oluştuğu durum. Bu durum oluştuğunda çağrıyı tekrarlamalısınız.
EINTR ile başarısızlık dışında yakalanan tüm sinyaller için işlevlerin tekrar devreye girmesini sağlayabilirsiniz. Bkz. Sinyallerle Kesilen İlkeller.
int EIO
Giriş/Çıkış hatası; genellikle fiziksel okuma ve yazma hataları için kullanılır.
int ENXIO
Böyle bir adres ya da aygıt yok. Sistem bir dosya olarak belirttiğiniz bir aygıtı kullanmaya çalışır ve aygıtı bulamazsa bu hata oluşur. Bu hatayı alıyorsanız ya aygıt dosyası doğru olarak oluşturulmamış veya fiziksel aygıt bulunamamış ya da makineye doğru bağlanmamıştır.
int E2BIG
Argüman listesi çok uzun; exec işlevlerinden biri ile çalıştırılan yeni bir uygulama argümanlarla çağrıldığında çok fazla bellek alanı ayrılmaya çalışılırsa oluşur. GNU sistemlerinde bu durum asla oluşmaz.
int ENOEXEC
Çalıştırılabilir dosya biçimi geçersiz. Bu durum exec işlevleriyle saptanır.
int EBADF
Dosya tanımlayıcı hatalı; örneğin dosya tanımlayıcının açılmamış olduğu ya da sadece yazmak için açılmış bir tanımlayıcıdan okuma yapıldığı gibi durumlarda oluşur.
int ECHILD
Hiç alt süreç yok. Alt süreçlerle çalışılması durumunda, üzerinde çalışılacak bir alt süreç yoksa oluşur.
int EDEADLK
Kısırdöngü önlendi. Bir sistem özkaynağının ayrılması sırasında bu özkaynağın başka bir özkaynağın varlığına bağlı olması ve o özkaynağında ayrılacak özkaynağa bağlı olması gibi bir durumda her iki özkaynağın bir diğerini beklemesi gibi bir durumdur. Sistem bu gibi durumlarda durumu bildirmeyi garanti etmez. Eğer bu hatayı almışsanız, sistem tam çökeceği sırada sizi uyarabilmiş ve size bir şans verebilmiş demektir... Örnekler için Dosya Kilitleri kısmına bakınız.
int ENOMEM
Yeterli bellek yok. Sistem kapasitesini doldurduğu için sanal bellek ayıramıyordur.
int EACCES
İzinler yetersiz; dosya izinlerinin yapılmaya çalışılan işlem için yetersiz olduğu durum.
int EFAULT
Hatalı adres; geçersiz bir göstericinin saptandığı durum. GNU sistemlerinde bu hatayı asla almazsınız, onun yerine bir sinyal alırsınız.
int ENOTBLK
Bir blok özellikli dosya gereken yerde verilen dosya uygun değilse oluşur. Örneğin, Unix sistemlerinde normal bir dosyayı bir dosya sistemi olarak sisteme bağlamaya çalışırsanız bu hatayı alırsınız.
int EBUSY
Aygıt ya da özkaynak meşgul; bir sistem kaynağının kullanımda olduğu için paylaşılamadığında oluşur. Örneğin, bir bağlı dosya sisteminin kökünü bir dosya olarak silmeye çalışırsanız bu hatayı alırsınız.
int EEXIST
Dosya var. Mevcut bir dosyanın yeni bir dosya olarak belirtildiği durum.
int EXDEV
Dosya sistemlerine uygunsuz bir bağ oluşturulmaya çalışıldığı saptandı. Bu durum sadece link kullanıldığında bir yandan da rename ile dosyanın ismi değiştirilmeye çalışıldığında oluşur.
int ENODEV
Belli bir sıraya uygun bir aygıtın verilmesi umulan bir işleve yanlış aygıt türü verildi.
int ENOTDIR
Bir dizin gerekliyken belirtilen dosya bir dizin değil.
int EISDIR
Dosya bir dizin; bir dizini yazmak için açamaz veya bir dizin belirten bir sabit bağı silemezsiniz.
int EINVAL
Geçersiz argüman. Bir kütüphane işlevi yanlış argümanla çağrıldığında oluşan çeşitli sorunlara dikkat çekmek için kullanılır.
int EMFILE
Mevcut süreç çok fazla dosya açmış ve daha fazlasını açamaz. Tanımlayıcıların tekrarlanması bu sınıra yaklaşılmasına sebep olur.
BSD ve GNU sistemlerinde açık dosyaların sayısı gerektiğinde arttırılabilmesini sağlayan bir özkaynak sınırıyla denetlenir. Bu hatayı alırsanız ya RLIMIT_NOFILE sınırını arttırın ya da sınırsız yapın. Bkz. Özkaynak Kullanımın Sınırlanması.
int ENFILE
Sistemin bütününde çok fazla farklı dosya açılışı var. Bilgi: Birbirlerine bağlı kanallar tek bir dosya açılışı sayılır; bkz. İlintili Kanallar. Bu hata GNU sistemlerinde hiçbir zaman oluşmaz.
int ENOTTY
İlgisiz G/Ç denetimi işlemi. Örneğin, uçbirim kiplerinin normal bir dosya için kullanılmaya çalışılması.
int ETXTBSY
Çalışmakta olan bir dosyaya yazma denemesi ya da yazmak için açılmış bir dosyanın çalıştırılmasının denenmesi. Çoğunlukla bir hata ayıklama uygulaması ile çalışmakta olan bir yazılımın dosyasının yazmak için açılmaya çalışılması bu hatanın ortaya çıkmasına sebep olur. Sembolik sabitin ismi "text file busy" (metin dosyası meşgul) tümcesinden kısaltılmıştır. Bu hata GNU sistemlerinde oluşmaz çünkü gerekirse metin kopyalanır.
int EFBIG
Dosya çok büyük; dosyanın uzunluğunun sistemde mümkün olan dosya uzunluğundan büyük olduğu durum.
int ENOSPC
Aygıt üzerinde yer yok; disk doluyken üzerine bir dosyanın yazılmaya çalışılması durumu.
int ESPIPE
Konumlama işlemi geçersiz (örneğin bir boruhattında).
int EROFS
Salt okunur dosya sisteminde birşeyler değiştirilmeye çalışıldı.
int EMLINK
Çok fazla bağ var; tek bir dosyaya çok sayıda bağ varsa, dosyanın ismi bağlarla zaten değiştirilmişse ve rename ile dosyanın ismi değiştirilmeye çalışılırsa bu durum ortaya çıkabilir. Bkz. Dosya İsimlerinin Değiştirilmesi.
int EPIPE
Kırık boruhattı; bir boruhattının diğer ucunda okuyacak bir sürecin olmaması durumu. Her kütüphane işlevi bu hatayla dönebilir ve ayrıca bir SIGPIPE sinyali üretir. Bu sinyal yazılım tarafından yakalanmıyor ya da engellenmiyorsa yazılımı sonlandıracaktır. Bu yüzden eğer yazılımınız SIGPIPE sinyalini yakalamıyor ya da engellemiyorsa yazılımınız bu hatayı asla almayacak ama sonlanacaktır.
int EDOM
Sayısal argüman alan dışı; matematik işlevlerinde bir argüman işlev tarafından tanımlanmış alandan taşarsa bu hata oluşur.
int ERANGE
Kapsama hatası; matematik işlevleri tarafından kullanılır. Sonuç, olması gereken değer aralığının altında ya da üstünde ise bu hata oluşur.
int EAGAIN
Özkaynak geçici olarak kullanımdışı; daha sonra tekrar denerseniz çağrı çalışacaktır. EWOULDBLOCK makrosu ile aynıdır ve GNU C kütüphanesinde bu ikisi aynıdır.
Bu hata bir kaç farklı durumda ortaya çıkabilir:
  • Engellenmemesi öngörülmüş bir nesne üzerinde nesneyi engelleyecek bir işlem yürütülmeye çalışılırsa bu hata alınabilir. Bir işlemin tekrarlanması, bazı dış koşullar nesnenin okuma, yazma veya bağlanma için hazır hale gelmesini sağlayana dek engellenecektir. İşlemin mümkün olacağı zamanı select işlevini kullanarak bulabilirsiniz.
    Taşınabilirlik Bilgisi:
    Eski Unix sistemlerinin çoğunda, bu durum EWOULDBLOCK ile EAGAIN hata kodundan farklı bir durum olarak ele alınmıştır. Yazılımınızın taşınabilirliği açısından her iki hata koduna da bakmalı ve onları aynı olarak değerlendirmelisiniz.
  • Bir geçici özkaynak yokluğu bir işlemi imkansız yapabilir. fork işlevi bu hatayı döndürebilir. Varlığı umulanın geçici olarak yokluğunu ifade eder. Bu durumda yazılımınız işlemi tekrarlayabilir ve işlemi gerçekleştirebilir. Şüphesiz tekrar denemeden önce bir kaç saniye beklemek ve az bulunan özkaynakları diğer süreçlerin serbest bırakmasına izin vermek daha iyidir. Bu tür kıtlık durumlarına sıkça rastlanır ve tüm sistemi etkiler. Böyle bir durumda etkileşimli bir yazılım kullanıcıya bilgi verip kendi komut döngüsüne geri dönmelidir.
int EWOULDBLOCK
GNU C kütüphanesinde bu hata EAGAIN (yukarıda) ile aynıdır. Değerler bütün işletim sistemlerinde daima aynıdır.
Eski Unix sistemlerinin çoğunda, C kütüphanelerinde EWOULDBLOCK, EAGAIN hata kodundan farklıdır.
int EINPROGRESS
Engellenmemesi öngörülmüş bir nesne üzerinde başlatılmış bir işlem tamamlanmadı. Daima bloklanması gereken bazı işlevler (örn, connect) hiçbir zaman EAGAIN hatası vermez. Onun yerine, bir işlemin başlamış olduğunu ve tamamlanmasının biraz vakit alacağını belirten EINPROGRESS hatası döner. Çağrı tamamlanmadan önce nesneyi değiştirmeye çalışmak ise EALREADY hatasına yolaçar. Kuyruktaki işlemin ne zaman tamamlanacağını bulmak için select işlevini kullanabilirsiniz.
int EALREADY
Engellenmemesi öngörülmüş bir nesne üzerindeki işlem hala sürüyor.
int ENOTSOCK
Bir soket gerektiği halde belirtilen dosya bir soket değil.
int EMSGSIZE
Bir sokete gönderilen iletinin uzunluğu desteklenenden fazla.
int EPROTOTYPE
İstenen protokol bu soket türünü desteklemiyor.
int ENOPROTOOPT
Belirttiğiniz soket seçeneği soket tarafından kullanılmakta olan protokol için uygun değil.
int EPROTONOSUPPORT
Soket istenen iletişim protokolünü desteklemiyor (istenen protokolün tamamiyle geçersiz olduğu durumda). Bkz. Bir Soketin Oluşturulması.
int ESOCKTNOSUPPORT
Soket türü desteklenmiyor.
int EOPNOTSUPP
İstediğiniz işlem desteklenmiyor. Bazı soket işlevleri tüm soket türleri için uygun değildir ve bunlar tüm iletişim protokolleri için gerçekleştirilmemiş olabilirler. GNU sisteminde bir nesne istenen işlemi desteklemiyorsa birçok çağrı bu hatayı verebilir. Sunucunun bu çağrı için hiçbir şey yapamayacağı genel bir durumu belirtir.
int EPFNOSUPPORT
İstediğiniz soket iletişim protokolü ailesi desteklenmiyor.
int EAFNOSUPPORT
Bir soket için belirtilmiş adres ailesi desteklenmiyor; adres ailesinin soket üzerinde kullanılan protokolle bağdaşmadığını belirtir. Bkz. Soketler.
int EADDRINUSE
İstenen soket adresi kullanımda.
int EADDRNOTAVAIL
İstenen soket adresi kullanıma uygun değil; örneğin, yerel konak ismi ile eşleşmeyen bir soket ismi verilmeye çalışılması. Bkz. Soket Adresleri.
int ENETDOWN
Ağ çökük olduğundan soket işlemi başarısız oldu.
int ENETUNREACH
Uzak konağı içeren alt ağ erişilemez olduğundan soket işlemi başarısız oldu.
int ENETRESET
Uzak konak çöktüğünden ağ bağlantısı sıfırlandı.
int ECONNABORTED
Ağ bağlantısı yerel olarak sonlandırıldı.
int ECONNRESET
Ağ bağlantısı yerel konağın denetimi dışında kapandı. Örneğin, uzak makinenin yeniden başlatılıyor olması veya önlenemeyen bir protokol saldırısı bu hataya sebep olabilir.
int ENOBUFS
Çekirdeğin G/Ç tamponlarının hepsi kullanımda. GNU'da bu hata daima ENOMEM ile eşanlamlıdır. Ağ işlemlerinin birinden ya da diğerinden alabilirsiniz.
int EISCONN
Zaten bağlı olan bir sokete bağlanmayı denediniz. Bkz. Bir Bağlantının Oluşturulması.
int ENOTCONN
Soket hiçbir şeye bağlı değil. Veriyi hedefini belirtmeksizin bir soket üzerinden aktarmaya çalışırsanız bu hatayı alırsınız. Bağlantısız soketlerde (örneğin UDP) bu hata yerine EDESTADDRREQ hatası alınır.
int EDESTADDRREQ
Sokete öntanımlı hedef adresi belirtilmemiş. Veriyi hedefini belirtmeksizin connect ile bir bağlantısız soket üzerinden aktarmaya çalışırsanız bu hatayı alırsınız.
int ESHUTDOWN
Soket zaten kapatılmış.
int ETOOMANYREFS
Çok fazla başvuru: uçlar birbirine bağlanamıyor
int ETIMEDOUT
Bir zamanaşımı belirtilmiş bir soket işlemine zamanaşımı süresinde bir yanıt gelmedi.
int ECONNREFUSED
Bir uzak konak ağ bağlantısına izin vermedi (genelde uzak konağın istenen hizmeti sunmadığı durumlarda oluşur).
int ELOOP
Bir dosya ismine bakılırken çok seviyeli sembolik bağlar saptandı. Bu durum çoğunlukla kapalı bir çevrim oluşturan sembolik bağları belirtir.
int ENAMETOOLONG
Dosya ismi çok uzun (PATH_MAX'dan daha uzun; bkz. Dosya Sistemi Kapasite Sınırları) veya konak ismi çok uzun (gethostname veya sethostname işlevlerinden döner; bkz. Konak İsimlendirmesi).
int EHOSTDOWN
İstenen ağ bağlantısındaki uzak konak çökük.
int EHOSTUNREACH
İstenen ağ bağlantısındaki uzak konak erişilebilir değil.
int ENOTEMPTY
Dizin boş değil, işlem için dizin boş olmalı. Bu hata genelde boş olmayan bir dizini silmeye kalkınca oluşur.
int EPROCLIM
Bu hata, yeni bir süreç üzerinde kullanıcı başına sınır fork ile aşıldığında oluşur. RLIMIT_NPROC sınırı hakkında daha ayrıntılı bilgiyi Özkaynak Kullanımın Sınırlanması bölümünde bulabilirsiniz.
int EUSERS
Çok fazla kullanıcı olduğundan dosya kotası sistemi bozuldu.
int EDQUOT
Kullanıcının disk kotası aşıldı.
int ESTALE
Eskimiş NFS dosya kaydı. Sunucu konak üzerindeki dosya sisteminin yeniden düzenlenmesi nedeniyle NFS sisteminin iç bozulmasını belirtir. Bu bozulmanın giderilmesi için yerel konak üzerinde NFS dosya sisteminin önce ayrılıp sonra tekrar bağlanması gerekir.
int EREMOTE
Bir uzak dosya sistemi zaten kullanımda olan NFS bağlama dosyası ismi ile sisteme bağlanmaya çalışıldı. (Bu bazı işletim sistemlerinde bir hatadır, ancak GNU sistemlerinde bu hata kodunu imkansız yaparak onun çalışacağını umuyoruz.)
int EBADRPC
RPC yapısı hatalı
int ERPCMISMATCH
RPC sürümü yanlış
int EPROGUNAVAIL
RPC uygulaması kullanılabilir değil
int EPROGMISMATCH
RPC uygulaması sürümü yanlış
int EPROCUNAVAIL
RPC, uygulama için hatalı yordam yürüttü
int ENOLCK
Kullanılabilir bir kilit yok. Bu hata dosya kilitleme oluşumları tarafından kullanılır. Bilgi için Dosya Kilitleri bölümüne bakınız. Bu hata GNU sistemlerinde hiçbir zaman üretilmez, ancak NFS sunucusunun çalıştığı başka bir işletim işletim sistemindeki bir işlemden kaynaklanabilir.
int EFTYPE
İlgisiz dosya türü ya da biçimi. Dosya işlem için yanlış türdendir ya da bir veri dosyası yanlış biçimlidir.
Bazı sistemlerde, chmod ile bir dizin olmayan dosyaya yapışkan bit belirtilmeye çalışılırsa bu hata oluşur. Bkz. Dosya İzinlerinin Atanması.
int EAUTH
Kimlik kanıtlama hatası.
int ENEEDAUTH
Kimlik kanıtlayıcı gerekli
int ENOSYS
İşlev henüz gerçeklenmedi. Bu hata çağrılan işlevin C kütüphanesinde ya da işletim sisteminde henüz mevcut olmadığını belirtir. Bu hatayı alıyorsanız, C kütüphanesinin ya da işletim sisteminin yeni bir sürümünü sisteminize kurmadığınız sürece aynı işlev için bu hatayı almaya devam edeceksiniz demektir.
int ENOTSUP
Desteklenmiyor. Bir işlev bu hatayı döndürüyorsa, ona verilen bir parametrenin geçerli olduğunu ancak istenen işlevselliğin bulunmadığı anlaşılır. İşlevin henüz bir komutu, bir seçeneği ya da bir bayrak bitini gerçekleştirmediği anlamına gelebilir. Bir işleve bir parametre içinde verilen bazı nesneler, örneğin bir dosya tanıtıcısı ya da port, verilen diğer parametrelerle desteği sağlayamadığı anlamına da gelebilir. Farklı bir dosya tanıtıcısı ya da farklı bir parametre değerleri aralığı ile destek sağlanmış olabilir.
İşlevin tamamı gerçeklenmemişse bu hata değil ENOSYS döner.
int EILSEQ
Bir çokbaytlı karakter çözümlemesinde, işlev bir geçersizlik saptadı ya da bayt sırası tamamlanmamış veya verilen geniş karakter geçersiz.
int EBACKGROUND
GNU sisteminde, term protokolünü destekleyen sunucular, çağrıcı uçbrimin önalan işlem grubunda değilse bazı işlemler için bu hatayı döndürebilir. Aslında kullanıcılar bu hatayı görmezler. Çünkü örneğin read ve write gibi işlevler hatayı SIGTTIN eya SIGTTOU sinyaline dönüştürürler. İşlem grupları ve bu sinyaller hakkında daha fazla bilgi edinmek için İş Denetimi bölümüne bakınız.
int EDIED
GNU sisteminde, açılan bir dosya bir uygulama tarafından dönüştürüldüğünde veya çevirici uygulama dosyaya bağlanmadan önce başlatılırken ölürse bu hata oluşur.
int ED
Deneyimli kullanıcı neyi yanlış yaptığını bilir.
int EGREGIOUS
Ne yaptınız?
int EIEIO
Evine dön ve sütünü iç.
int EGRATUITOUS
Bu hata kodunun bir kullanım amacı yok.
int EBADMSG
Hatalı ileti
int EIDRM
Belirteç kaldırıldı
int EMULTIHOP
Çoklu sıçrama denendi
int ENODATA
Kullanılabilir veri yok
int ENOLINK
Bağ kopmuştu
int ENOMSG
İstenen türde ileti yok
int ENOSR
Akımdışı özkaynaklar
int ENOSTR
Aygıt bir akım değil
int EOVERFLOW
Tanımlı veri türü için değer çok büyük
int EPROTO
Protokol hatası
int ETIME
Zamanlayıcı zamanaşımına uğradı
int ECANCELED
İşlem iptal edildi. Bir işlem daha tamamlanmadan herhangi bir anda iptal edilmiş. Bkz. Eşzamansız G/Ç. aio_cancel işlevini çağırdığınızda normal sonuç olarak işlemin tamamlanması bu hata ile etkilenir. Bkz. Eşzamansız G/Ç İşlemlerinin İptal Edilmesi.
Aşağıdaki hata kodları Linux/i386 çekirdeğinde tanımlıdır ve henüz belgelendirilmemiştir. (Ç.N: Hata iletileri özgün belgede yoktur, onları ben ekledim.)
int ERESTART  Engellenen sistem çağrısı yeniden başlatılmalı
int ECHRNG    Kanal numarası aralık dışında
int EL2NSYNC  2. seviye eşzamanlı değil
int EL3HLT    3. seviye kapandı
int EL3RST    3. seviye sıfırlandı
int ELNRNG    Bağ numarası aralık dışında
int EUNATCH   Protokol sürücüsü bağlı değil
int ENOCSI    Kullanılabilir bir CSI yapısı yok
int EL2HLT    2. seviye kapandı
int EBADE     Geçersiz değişim
int EBADR     İstek tanımlayıcı hatalı
int EXFULL    Değişim kotası doldu
int ENOANO    Anot yok
int EBADRQC   İstek kodu geçersiz
int EBADSLT   Yuva geçersiz
int EDEADLOCK Dosya kilitlemede kısırdöngü hatası
int EBFONT    Yazıtipi dosyasının biçimi hatalı
int ENONET    Makine ağ üzerinde değil
int ENOPKG    Paket kurulu değil
int EADV      Dikkat çekme hatası
int ESRMNT    Srmount hatası
int ECOMM     Gönderme sırasında iletişim hatası
int EDOTDOT   RFS'e özgü hata
int ENOTUNIQ  İsim ağ üzerinde eşsiz değil
int EBADFD    Dosya tanımlayıcı hatalı durumda
int EREMCHG   Uzak adres değişti
int ELIBACC   Gerekli bir paylaşımlı kütüphaneye erişilemiyor
int ELIBBAD   Bozulmuş bir paylaşımlı kütüphaneye erişim
int ELIBSCN   a.out içindeki .lib bölümü bozulmuş
int ELIBMAX   Çok fazla paylaşımlı kütüphane ilintilenmeye çalışılıyor
int ELIBEXEC  Bir paylaşımlı kütüphane doğrudan çalıştırılamaz
int ESTRPIPE  Akımlarda boruhattı hatası
int EUCLEAN   Yapı temizlik gerektiriyor
int ENOTNAM   İsimli türde bir XENIX dosyası değil
int ENAVAIL   Kullanılabilir bir XENIX semaforu yok
int EISNAM    Bir isimli dosya mı
int EREMOTEIO Uzak G/Ç hatası
int ENOMEDIUM Ortam bulunamadı
int EMEDIUMTYPE Ortam türü yanlış
int ENOKEY
int EKEYEXPIRED
int EKEYREVOKED
int EKEYREJECTED
int EOWNERDEAD
int ENOTRECOVERABLE
Önceki Üst Ana Başlık Sonraki
Hata Denetimi Başlangıç Hata İletileri
Bir Linux Kitaplığı Sayfası