Hem Linux hem de GNU kullanıcı alanı (glibc) bir dizi "WONTFIX" hatasına sahip gibi görünüyor; yani, sorumlu tarafların ISO C ve/veya POSIX gerekliliklerini açıkça ihlal etmelerine rağmen düzeltmeye isteksiz olduklarını beyan ettikleri hatalar, ama ben ' Bu tür hataları ve çevrelerinde çalışma önerilerini listeleyen programcılar için herhangi bir kaynağın farkında olmamak. İşte GNU/Linux'ta WONTFIX hataları ve bunların etrafında nasıl çalışılır?
akla gelen birkaçı:- Linux UDP
select
hata:select
(ve ilgili arayüzler) bayrağı en kısa sürede bir paket alındıktan olarak okunması için hazır bir UDP soket dosya tanımlayıcısı olmadan sağlama toplamını doğrular. Sonrakirecv
/read
/etc'de, eğer sağlama toplamı geçersiz ise, çağrı engellenir. Bunun etrafında çalışmak her zaman UDP soketlerini blokaj yapmayan moda geçirir veEWOULDBLOCK
koşulunu ele alır. Doğru olarak hatırlarsam Maradns bu hatadan etkilenen ilk kayda değer projeydi ve ilk olarak (başarısızlıkla) düzeltmek için şikayetçi oldu. Not: Martin v. Löwis tarafından işaret edildiği gibi, görünüşe göre bu hata düzeltildi. Linux'un gerçekten güncel olmayan sürümlerini desteklemeniz gerekiyorsa, geçici çözümler yalnızca gerekli olabilir. - GNU C kitaplığındaki
printf
ailesi, bir alan kesinliği (%.3s
'daki gibi) belirtildiğinde, potansiyel olarak kesilmiş çıktıya neden olduğunda, bağımsız değişkenleri%s
olarak bayt dizeleri yerine çok baytlı karakter dizeleri olarak yanlış şekilde ele alır. Tümprintf
altsisteminin değiştirilmesi (ya da yalnızcaprintf
işlev ailesini çok baytlı olmayan karakter bayt dizeleriyle değiştirmekten başka bir çözüm bilmiyorum, ancak bir UTF içindesnprintf
kullanarak eski kod sayfası dizelerini işlemek istiyorsanız bu sorun olabilir -8 yerel ayar). -
Bazı syscall'lar için(Bunun için bir referans bulamıyorum ve belki ben yanılıyorum bulabilirim yakınerrno
sonuç kodları (hangisinin doğru olduğunu hatırlayamıyorum). Genellikle GNU/Linux man sayfalarını okuduysanız ve bunları standartla karşılaştırırsanız, bunları kontrol etmek için yeterince kolaydır.ENOTSUP
veEOPNOTSUP
aynı değere sahip bir konudur;. PDTR 24715 bakınız
biraz daha böcek ve geçici çözümler yapabiliriz nelerdir. ? bu listeye eklemek Benim hedeflerini bu soruyu soran şunlardır: hem yeni hem de deneyimli programcılar hızla intended- çalıştırırken ortaya çıkabilecek olası sorunların farkına böylece
- böyle hataların daha kapsamlı bir listeyi oluşturmak için GNU/Linux üzerinde taşınabilir program.
- SO kolektif beyninden, mümkün olduğunca çok sayıda hata için akıllı ve göze batmayan standart çözümlerin düşünüldüğünü düşünmek yerine, herkes kendi çözümlerini sokulduktan sonra icat etmek yerine, ve belki de en ufak, çirkin, ya da hack yollarla yapmak yerine - ya da Daha da kötüsü, daha uyumlu sistemler için desteği bozacak şekilde.
Kim kapatacaksa, lütfen açıklayınız. Açıkçası bir programlama konusu olan geçici çözümler hakkında soru sorduğumdan bunun konu dışı olabileceğini görmüyorum. Bunu kabul etmenin ayrı bir sebebi olacağını söylemek için hafif bir tartışmacı olduğunu itiraf ediyorum, ancak eğer odak, bu sorunlarla başa çıkacak çözümlere, sadece bir suçlamadan ziyade, göze çarpan bir yöntemle yapıcı bir arayışsa, bunun değerli bir soru olduğunu düşünüyorum. –
Ne bugs? Linux standartlara uygun değilse, yanlış olan standarttır. –
@R .. - sadece şaka. ama bu şekilde düşünen insanlar varsa şaşırmayacağım. Ve değerinde olan şey için - bence bu iyi bir soru. –