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

  • HowcastTechGadgets

    HowcastTechG

    22 EYLÜL 2010
  • Majestic Casual

    Majestic Cas

    28 NİSAN 2012
  • New Challenger - Game Reviews

    New Challeng

    20 Temmuz 2006