SORU
3 Aralık 2011, CUMARTESİ


Neden SİGPİPE var mı?

Benim anlayış, SIGPIPE sadece ortaya çıkan sonuç a write(), (ve) return -1 ve set errno EPIPE... Bu Yüzden neden biz ekstra yük sinyali? Sonuç olarak SIGPIPE görmezden gelir ve hiç bir acı hissettim boruları ile çalışıyorum her zaman, bir şey mi kaçırdım?

CEVAP
18 ŞUBAT 2012, CUMARTESİ


Önceden kabul edilen cevabı almak istemiyorum. SIGPIPE oluşturulan tam olarak ne zaman write başarısız EPIPE, önceden - aslında güvenli bir şekilde önlemek için SIGPIPE olmadan değişen küresel sinyal planlar için bir geçici olarak maske ile pthread_sigmask gerçekleştirmek write, sonra gerçekleştirmek sigtimedwait (sıfır zaman aşımı) tüketmek bekleyen SIGPIPE sinyal (gönderilen iş parçasıyla, değil işlemi) önce maskesinin tekrar.

SIGPIPE var nedeni çok daha basit olduğunu düşünüyorum: saf aklı başında varsayılan davranış "" programlar sürekli giriş okumak, bir şekilde dönüştürmek ve çıkış yazma. filtre kurulması Olmadan SIGPIPE, sürece bu programlar açıkça ele yazma hataları ve hemen çıkmak (ki olmayabilir istenen davranış için tüm yazma hataları, neyse), onlar üste kadar kalmamış girdi bile kendi çıkış borusu kapalı. Emin olabilirsiniz duplicte davranış SIGPIPE tarafından açıkça kontrol EPIPE çıkılıyor, ama bütün amacı SIGPIPE elde etmek için bu davranış, varsayılan olarak ne zaman programcı tembel.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • TechXCentral

    TechXCentral

    12 Temmuz 2011
  • TheFlightsuit

    TheFlightsui

    22 HAZİRAN 2009
  • TWiT Netcast Network

    TWiT Netcast

    27 EKİM 2005