2009-02-06 7 views
6

यह एक असाइनमेंट के लिए है जिस पर मैं काम कर रहा हूं, और नहीं, मैं आपको सिर्फ जवाब देने के लिए नहीं ढूंढ रहा हूं। मुझे बस किसी को सही दिशा में इंगित करने की आवश्यकता है, शायद एक पंक्ति या दो नमूना कोड के साथ।लिनक्स और सी: मल्टी-प्रोसेस प्रोग्राम में फ़ाइल पढ़ने की प्राथमिकता कैसे सेट करें?

मुझे यह पता लगाने की आवश्यकता है कि मेरे प्रोग्राम के भीतर से एक फ़ाइल पढ़ने के ऑपरेशन की प्राथमिकता कैसे सेट करें। बिंदु करने के लिए:

  • सर्वर प्रक्रिया संदेश प्राप्त करता है और यह
  • बच्चे संदेश से फ़ाइल नाम को खोलने के लिए कोशिश करता है संभाल करने के लिए एक बच्चे spawns और संदेश कतार में फ़ाइल की सामग्री लोड हो रहा है शुरू होता है
  • भी हो सकते हैं कई बच्चे एक ही समय में चल रहे हैं, और प्रारंभिक संदेश में प्राथमिकता है इसलिए कुछ संदेशों को अधिक डिवाइस एक्सेस मिल सकता है

एकमात्र तरीका मैं ऐसा करने के लिए सोच सकता हूं (अभी, वैसे भी) काउंटर में वृद्धि करना होगा हर बार जब मैं एक संदेश बनाता हूं, और somethi करने के लिए काउंटर के बाद शेड_इल्ड की तरह, उस प्रक्रिया के लिए दिए गए मान को दिया गया प्राथमिकता। यह संभवतः एक भयानक, भयानक दृष्टिकोण है, लेकिन इस समय मैं सोच सकता हूं। असाइनमेंट किसी अन्य चीज़ की तुलना में संदेश कतारों के बारे में अधिक है, लेकिन हमें अभी भी डेटा स्थानांतरण प्राथमिकता है।

किसी भी मदद/मार्गदर्शन की सराहना की :)

उत्तर

1

आप सुनिश्चित करें कि आपके काम फ़ाइलों के बारे में और नहीं प्रणाली वी संदेश कतार बात कर रही है कर रहे हैं?

के लिए आदमी पृष्ठों पढ़ें:

msgctl(2), msgget(2), msgrcv(2), msgsnd(2), capabilities(7), 
    mq_overview(7), svipc(7) 

हालांकि मुझे लगता है कि आप एक कुंजी के रूप में एक फ़ाइल का उपयोग एक संदेश कतार बनाने के लिए है, तो कई प्रक्रियाओं संदेश कतार, एक Sys के माध्यम से मुलाकात करने के लिए एक रास्ता है कि कर सकते हैं वी संदेश कतार स्वयं एक फ़ाइल नहीं है।

बस सोच रहा है क्योंकि आप विशेष रूप से "संदेश कतार" का उल्लेख करते हैं, और "प्राथमिकताओं" के बारे में बात करते हैं, जो संभवतः उदाहरण के संदेश प्रकार को मानचित्र कर सकते हैं। msgsnd और msgrcv, हालांकि यह बताना मुश्किल है कि आपने जो जानकारी दी है वह वास्तव में असाइनमेंट के बारे में क्या है।

+0

मेरे पास पहले से ही कई क्लाइंट्स से संदेश प्राप्त करने वाले सर्वर हैं, इसलिए संदेश/snd/rcv और ftok मेरे लिए कोई समस्या नहीं है। जिस चुनौती का सामना कर रहा हूं वह यह है कि मेरे संदेश से प्राथमिकता मूल्य कैसे लें और इसे उस दर पर लागू करें जिस पर संदेश प्रत्येक सर्वर बच्चे को छोड़ देता है, या डेटा को – David

+0

... डिस्क से पढ़ा जाता है। – David

2

हाल ही में, लिनक्स में कोई आईओ प्राथमिकता नहीं थी। अब ionice है। लेकिन मुझे संदेह है कि आप इसे अपने असाइनमेंट में इस्तेमाल करने के लिए हैं।

6

क्या बाल प्रक्रियाओं का पूल एक सेमफोर साझा करता है। एक बार जब बच्चा सेमफोर प्राप्त कर लेता है तो यह संसाधन से बाइट्स की एक पूर्वनिर्धारित संख्या पढ़ सकता है और इसे ग्राहक को वापस कर सकता है। बाइट पढ़ने की संख्या अनुरोध की प्राथमिकता से संबंधित हो सकती है। एक बार जब प्रक्रिया ने बाइट्स की पूर्वनिर्धारित संख्या को पढ़ा है तो सेमफोर जारी करें।

+0

वास्तव में ... बुरा नहीं है! धन्यवाद! और अपने उपयोगकर्ता नाम से जाकर, मैं इसे प्रशिक्षक जानता हूं जिसने मुझे यह असाइनमेंट दिया है? – David

+0

+1 कमिमी –

+0

होने के लिए +1 और मैं विकल्प प्रयोगशाला के बगल में कक्षा में हूं ... :-P – TofuBeer

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