Linux, C++ 'ya başvurmadan C dilinde bir istisna işleme sağlıyor mu? Veya, böyle bir istisna işleminin uygulanmasının en iyi yolu ne olabilir? Amaç, çağrılan her işlev için dönüş kodlarını kontrol etmekten kaçınmak, ancak C++ gibi bir şey yapmak, iş parçacığı güvenli ve kolay taşınabilir.Linux'ta C++ olmadan İstisna İşlemi C++
cevap
böyle bir şey sağlayan Linux duymadım, ancak bu sayfa C için kütüphane işleme bir üçüncü taraf istisna anlatılmaktadır: http://www.on-time.com/ddj0011.htm Gerçi indirme bağlantısını bulmak mümkün olmamıştır.
Teşekkürler, bu arada aynı siteye tökezledim, ancak kaynak kodunu bulamadım. – stefangachter
Burada, yukarıda belirtilen uygulama hakkında yorum yapma ve yorumlamaya ilişkin bazı genel düşünceler bulunmaktadır: http://landheer-cieslak.com/wordpress/error-handling-in-c/ – stefangachter
Sinyal işleyicileri bunun için yazarak sinyalleri işleyebilirsiniz. GNU de belgelenmiş Bu sinyallerin bazıları şunlardır:
- Program Hata Sinyalleri: Ciddi bir program hataları bildirmek için kullanılır.
- Sonlandırma Sinyalleri: Programı kesmek ve/veya sonlandırmak için kullanılır.
- Alarm Sinyalleri: Zamanlayıcıların sona ermesini belirtmek için kullanılır.
- Asenkron G/Ç Sinyalleri: Girişin mevcut olduğunu belirtmek için kullanılır.
- İş Denetim Sinyalleri: İş denetimini desteklemek için kullanılan işaretler.
- Çalışma Hatası Sinyalleri: İşletim sistemi hatalarını bildirmek için kullanılır.
- Çeşitli Sinyaller: Muhtelif Sinyaller.
- Sinyal Mesajlar: Bu here hakkında derinlemesine bilgi alabileceğimiz bir sinyal
açıklayan bir ileti yazdırma. Size aradığınızı herhalde aşağıdaki durumlarda iken: Eğer sinyalleri neden olan bir olay öngörüyorsanız
, bir işleyici işlevi tanımlayın ve çalıştırmak için işletim sistemini söyleyebilir zaman o belirli tip sinyal geldiğinde.
İpucu için teşekkürler. Ekspres yönetimi için sinyal kullanan bazı örnek kodlardan haberdar mısınız? – stefangachter
Gönderide bağlantıyı okursanız örnek kodlar vardır. –
Çekirdek, yırtma bölümlerine atlamak için goto kullanarak bunu yapar.
kodlama standartları için buraya bakınız: http://lxr.linux.no/linux+v2.6.34/Documentation/CodingStyle
Offtopic muhtemelen ama üzgünüm, bunu karşı koyamaz. Windows yapılandırılmış özel durum işleme -
söylemeliyim, ben şimdiye kadar gördüğüm tek gerçekten iyi ve kapsamlı bir istisna mekanizması SEH olduğunu.
BT (durum dinlenmek yığın boyunca otomatik bir nesnenin yıkıcı içinde atış zaman ellerini yükseltir) C++ durum işleme modeli darbeler. o yazılım istisnalar ve donanım tarafından üretilenler hem birleştirir beri
Artı o, gerçekten homojen istisna işleme var. Ya Windows için yazma veya Linux için benzer bir şey uygulamak -
Eğer durum işleme istiyorsanız Böylece
.P.S.Birçok insanın aksine, istisna işleminin kadarı, jmp
'u kullanarak normal program akışını kesmekten daha fazladır.
Ayrıca, istisnayı kimin ve nasıl ele aldığına ilişkin bir müzakere zinciri. O (en önemli) var - Her kapsamda doğru temizleme yürütme, iç içe istisnalar ile uğraşan ve
Benim kütüphanede exceptions4c bakmak için önerebilir vb? Linux üzerinde test edilmiştir ve finally
bloklar, sinyal işleme ve istisna hiyerarşileri oluşturmanızı sağlayan polimorfizm gibi birçok özelliğe sahiptir. Ayrıca çok iş parçacığı destekler.
- 1. zombi işlemi beklemeden kaldır C
- 2. yayılan C++ istisna Cython için - piton istisna
- 3. C- printf olmadan
- 4. Standart istisna sınıfları C++ kitaplığında
- 5. Bir C/C++ programından Mac OS X'deki bir işlemi örnekleme
- 6. Konsol neden olmadan kapatır C#
- 7. OSX'de Karbon C uygulaması için istisna sarıcısı
- 8. İşleyemediğiniz bir istisna yakalamak mümkün mü (C#)?
- 9. C#
- 10. Gecikme olmadan ses efekti çalma Objective-C
- 11. Yansıma olmadan C# kaynak kodundan Öznitelik Öznitelikleri
- 12. Resim kırpmadan C# .net kitaplığı olmadan
- 13. C# Yığın İzi Olmadan Arama Yöntemi Alın
- 14. C++ saf sanal işlevler olmadan soyut sınıf?
- 15. CRLF olmadan C# içinde WriteAllLines nasıl yazılır
- 16. Rastgele resim oluşturucu kopya olmadan C#
- 17. C# Uygulamamı Yönetici Hakları Olmadan Nasıl Yüklerim?
- 18. Bir prototip olmadan C fonksiyonları nasıl bulunur?
- 19. Odaklanma olmadan C# biçiminde bir form açma
- 20. C++
- 21. C#
- 22. İstisna yangında taşıma ve (.net 4,5 olarak) C 5.
- 23. C++
- 24. İstisna
- 25. C#
- 26. C/C++ Yapı ofseti
- 27. Bellek sızıntısı olmadan tamamlama blokunda çağrı işlemi
- 28. C#
- 29. C,
- 30. C# tasarımcısı C: C#
Gerçek erkekler setjmp()/longjmp() işlevini kullanır. –
Teşekkürler, bunu kontrol edecek. Aşağıda önerildiği gibi setjmp/longjmp sinyalleri kullanılarak bir avantaj/dezavantaj var mıdır? – stefangachter