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

  • habpsu

    habpsu

    25 Temmuz 2007
  • HTC

    HTC

    12 Ocak 2006
  • Chaîne de TheMoustic

    Chaîne de T

    5 Kasım 2006