2011-01-20 6 views
7

यदि एक ही पाइप पर निश्चित लंबाई डेटा (4 बाइट पता कहें) लिखने वाले कई धागे हैं और उस पाइप का एक पाठक है, तो क्या यह गारंटी है कि पाठक क्रम में बाइट प्राप्त करेगा? दूसरे शब्दों में, write() एक पाइप परमाणु है?यूनिक्स पाइप एकाधिक लेखकों

उत्तर

5

http://pubs.opengroup.org/onlinepubs/009695399/functions/write.html

परमाणु/गैर-परमाणु: एक लिखने परमाणु है अगर एक आपरेशन में लिखा पूरी राशि किसी अन्य प्रक्रिया से डेटा के साथ interleaved नहीं है। यह उपयोगी है जब एकाधिक लेखकों एक पाठक को डेटा भेज रहे हैं। अनुप्रयोगों को यह जानने की आवश्यकता है कि लिखने का अनुरोध परमाणु रूप से किया जाने की उम्मीद की जा सकती है। यह अधिकतम है जिसे {PIPE_BUF} कहा जाता है। आईईईई कक्षा 1,003.1-2001 के इस मात्रा का कहना है कि यह नहीं है कि क्या एक से अधिक {PIPE_BUF} बाइट्स के लिए लिखने अनुरोध परमाणु रहे हैं, लेकिन की आवश्यकता है कि {PIPE_BUF} या कम बाइट का राईट परमाणु होगी।

+0

धन्यवाद। मैंने मैन पेज http://linux.die.net/man/2/write देखा और कुछ भी नहीं देखा। – Manish

+0

ध्यान दें कि 'PIPE_BUF' का मान यूनिक्स सिस्टम के बीच महत्वपूर्ण रूप से भिन्न होता है। मनाए गए मानों के एक संयोजन के लिए यहां देखें: http://ar.to/notes/posix#pipe-buf –

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

  • कोई संबंधित समस्या नहीं^_^