10
วิธีป้องกัน SIGPIPE (หรือจัดการอย่างถูกต้อง)
ฉันมีโปรแกรมเซิร์ฟเวอร์ขนาดเล็กที่ยอมรับการเชื่อมต่อบนซ็อกเก็ต TCP หรือ UNIX ในพื้นที่อ่านคำสั่งง่าย ๆ และส่งคำตอบกลับขึ้นอยู่กับคำสั่ง ปัญหาคือไคลเอนต์อาจไม่สนใจคำตอบในบางครั้งและออกก่อนเวลาดังนั้นการเขียนลงในซ็อกเก็ตนั้นจะทำให้เกิด SIGPIPE และทำให้เซิร์ฟเวอร์ของฉันทำงานล้มเหลว การปฏิบัติที่ดีที่สุดในการป้องกันความผิดพลาดคืออะไร มีวิธีการตรวจสอบว่าอีกด้านของบรรทัดยังอ่านอยู่หรือไม่? (select () ดูเหมือนจะไม่ทำงานที่นี่เพราะมันบอกว่าซ็อกเก็ตเขียนได้เสมอ) หรือฉันควรจับ SIGPIPE ด้วยเครื่องจัดการและเพิกเฉย?
260
c
io
signals
broken-pipe
sigpipe