मैंने पुस्तकों और ऑनलाइन संसाधनों में पढ़ा है कि कांटा() सिस्टम कॉल वर्तमान प्रक्रिया की एक प्रति बनाता है और दोनों प्रक्रियाएं फोर्क के बाद बिंदु से निष्पादित करना शुरू करती हैं() सिस्टम कॉल किया जाता है। क्या यह सही है?इस कोड में लिनक्स पर फोर्क() सिस्टम कॉल का व्यवहार
यदि यह सही है तो नीचे दिए गए कोड "टेस्ट टेस्ट" क्यों प्रिंट करते हैं? इसे सिर्फ एक बार "टेस्ट" प्रिंट करना चाहिए (मूल प्रक्रिया द्वारा)।
#include <sys/types.h> /* pid_t */
#include <sys/wait.h> /* waitpid */
#include <stdio.h> /* printf, perror */
#include <stdlib.h> /* exit */
#include <unistd.h> /* _exit, fork */
int main(void)
{
int ctr =1;
int pc = 1;
printf("%s", "Test ");
pid_t pidmain = fork();
return EXIT_SUCCESS;
}
"परीक्षण" स्ट्रिंग में "\ n" जोड़ें। – wildplasser
@ विल्डप्लेसर आश्चर्यजनक रूप से जोड़ने के बाद \ n मुझे टेस्ट (सिंगल टाइम) 2 गुना नहीं मिला। लेकिन क्यों? –
स्टडआउट की रेखा बफरिंग। आपके कार्यक्रम की कांटा() डी प्रतियां दोनों में स्टडआउट पर अर्ध-भरे बफर होते हैं, जो कार्यक्रम से बाहर निकलते हैं। (दोनों बाहर निकलें)। इसे प्रदर्शित करने के लिए, आप फोर्क() – wildplasser