fprintf धागा-सुरक्षित है? The glibc manual ऐसा लगता है कि यह है, लेकिन मेरा एप्लिकेशन, जो fprintf() को एकल कॉल का उपयोग करके फ़ाइल में लिखता है, अलग-अलग प्रक्रियाओं से आंशिक लेखन को जोड़ता है।क्या ग्लिब का fprintf() थ्रेड-सुरक्षित का कार्यान्वयन है?
संपादित करें: स्पष्टीकरण के लिए, प्रश्न में प्रोग्राम lighttpd प्लगइन है, और सर्वर एकाधिक कार्यकर्ता धागे के साथ चल रहा है।
फ़ाइल को देखते हुए, कुछ लिखने में अंतर होता है।
संपादित 2: यह समस्या मैं हो सकता है दिखाई दे रही है अलग प्रक्रियाओं वास्तव में किया जा रहा है lighttpd के "कार्यकर्ता धागे" की वजह से लगता है: http://redmine.lighttpd.net/wiki/lighttpd/Docs:MultiProcessor
समस्याएं
2 या अधिक प्रक्रियाओं चलाकर पर एक ही सॉकेट आपके पास बेहतर समेकन होगा, लेकिन इसमें कुछ दोष होंगे जिन्हें आपको अवगत होना चाहिए :
- mod_accesslog टूटी हुई एक्सेस लॉग बना सकता है, क्योंकि एक ही फ़ाइल दो बार खोली जाती है और सिंक्रनाइज़ नहीं होती है।
- mod_status n अलग काउंटर होगा, प्रत्येक प्रक्रिया के लिए एक सेट होगा।
- mod_rrdtool विफल हो जाएगा क्योंकि यह दो बार समान टाइमस्टैम्प प्राप्त करता है।
- mod_uploadprogress सही स्थिति नहीं दिखाएगा। एक से अधिक थ्रेड से लेखन और कई प्रक्रियाओं से लिख -
क्या आप इसे एक फ़ाइल में देख रहे हैं जिसे आप 'fprintf' के साथ लिखते हैं, या आप इसे' stdout' और 'stderr' धाराओं में देख रहे हैं? –