2012-05-16 24 views
7

लिनक्स पर्यावरण में हमारे आवेदन को डीबग करने के दौरान हम देख सकते हैं कि कुछ घटनाएं - POLLHUP|POLLIN केवल लिनक्स पर होती हैं। हमारा एप्लिकेशन यूनिक्स सॉकेट का उपयोग करता है। जब हम करते हैं:लिनक्स बनाम मतदान कार्यान्वयन पर सौरकरण

ret = poll(xpoll->pfd, xpoll->pfd_count, xpoll_timeout); 

strace पता चलता है:

poll([{fd=4, events=POLLIN|POLLPRI|POLLERR|POLLHUP}, {fd=6, events=POLLIN|POLLPRI|POLLERR|POLLHUP}, {fd=7, events=POLLIN|POLLPRI|POLLERR|POLLHUP}], 3, 16) = 1 
([{fd=7, revents=POLLIN|POLLHUP}]) 

यही स्थिति सोलारिस (एक ही आवेदन) में कभी नहीं होती है: struss पता चलता है:

2463/3:     fd=569 ev=POLLIN|POLLPRI|POLLERR|POLLHUP rev=0 
2463/3:     fd=639 ev=POLLIN|POLLPRI|POLLERR|POLLHUP rev=0 
2463/3:     fd=631 ev=POLLIN|POLLPRI|POLLERR|POLLHUP rev=POLLIN 
2463/3:     fd=1160 ev=POLLIN|POLLPRI|POLLERR|POLLHUP rev=0 
2463/3:     fd=400 ev=POLLIN|POLLPRI|POLLERR|POLLHUP rev=0 

तुम मुझे कृपया समझा सकते हैं क्या है सोलिस में मतदान और लीनक्स में मतदान के बीच अंतर? सभी उत्तरों के लिए अग्रिम में Thx।

+0

लिनक्स ईओएफ के मामले में भी पॉलिन (पढ़ने के लिए डेटा) देता है। लिनक्स में कोई पोलेफ़ोफ़ ध्वज नहीं है। यह सब मैं अब के बारे में है। – B4NZ41

उत्तर

3

दोनों, लिनक्स और सोलारिस, कुछ प्रकार की फाइलों, विशेष रूप से पाइपों पर ईओएफ के लिए पॉलिन सेट करने में असफल होते थे। एक आम कामकाज पोलहूप और पोलिन के साथ मिलकर जांच कर रहा था। जहां तक ​​मुझे पता है, लिनक्स कोर डेवलपर्स ने इसे इस तरह से रखा (शायद इरादा), जबकि सोलारिस फेलो ने उस व्यवहार को पॉलीन POLLEOF का उपयोग करने के लिए बदल दिया।

हालांकि, यह आपके आवेदन के लिए कोई मुद्दा नहीं होना चाहिए: किसी एप्लिकेशन की पोर्टेबिलिटी बढ़ाने के लिए, कोई हमेशा बिट-मास्क में दोनों झंडे की जांच करेगा।

चीयर्स!

+0

बीटीडब्लू, चूंकि पोलेओफ़ पीओएसईक्स का हिस्सा नहीं है - हो सकता है कि यह एक अन्य मैक्रो (-कंपिनेशन) के लिए उपनाम है जैसे पॉलिन या पॉलिन | पोलशप? मुझे यह जांचना है ... – mjhennig