2010-10-17 13 views
12

मुझे सॉकेट उपयोग लॉग करने की आवश्यकता है, और मैंने एक एलडी_PRELOAD लाइब्रेरी लिखी है।कैसे बताएं कि फ़ाइल हैंडल सॉकेट है या नहीं?

समस्या यह है कि जब मैं सामान्य फ़ाइल ऑपरेशंस की तुलना में पढ़ा जाता हूं() और लिखना() को ओवरराइड करता हूं (बेशक)।

तो मैं सामान्य फाइल डिस्क्रिप्टर और सॉकेट डिस्क्रिप्टर को अलग कैसे बता सकता हूं?

उत्तर

25

वर्णनकर्ता पर fstat पर कॉल करें और परिणाम पर S_ISSOCK मैक्रो का उपयोग करें।

struct stat statbuf; 
fstat(fd, &statbuf); 
S_ISSOCK(statbuf.st_mode); 
+0

बढ़िया! आपका बहुत बहुत धन्यवाद! – netom

संबंधित मुद्दे