2012-03-06 17 views
6

संभव डुप्लिकेट:
Working of fork() in linux gccयह कोड दो बार क्यों प्रिंट करता है?

#include <stdio.h> 

void main() 
{ 
    printf ("ciao"); 
    fork(); 
} 

मैं सी अनुकूलन के बारे में कुछ विचार है, लेकिन मुझे यकीन है कि नहीं हूँ। आशा है कि आप जवाब जानते हैं।

+4

क्या आपने इसे चलाने की कोशिश की है? – MByD

+2

मुझे पूरा यकीन नहीं है कि मैं सवाल समझता हूं। यह स्पष्ट है कि यह क्या प्रिंट करता है। इसके अलावा, मुख्य को एक int वापस करना चाहिए, और फ़ंक्शन कांटा() क्या स्पष्ट नहीं है :) –

+0

हां यह "ciaociao" प्रिंट करता है। मेरा सवाल यह है कि यह प्रिंट क्यों करता है। – gc5

उत्तर

14

कोड शायद "ciao" प्रिंट करेगा क्योंकि मानक आउटपुट IO buffered है इसलिए मानक आउटपुट के लिए आंतरिक बफर को बाल प्रक्रिया में दोहराया जाएगा और प्रत्येक प्रक्रिया, माता-पिता और बच्चे बाहर निकलने पर दोनों बफर फ़्लश हो जाएंगे।

यह अनुकूलन से असंबंधित है।

4

जब कांटा() कहा जाता है, दोनों माता पिता और बच्चे प्रक्रिया यह वारिस और इसलिए वे दोनों जब वे बफर फ्लश

प्रिंट आउट "Ciao" होगा। यदि आप fflush (stdout) कहते हैं;

फोर्क कॉल करने से पहले यह केवल एक बार प्रिंट करेगा

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