मैं UNIX प्रोग्रामिंग सीखने की कोशिश कर रहा हूं और कांटा () के बारे में एक सवाल आया है। मैं समझता हूं कि कांटा () वर्तमान में चल रही प्रक्रिया की एक समान प्रक्रिया बनाता है, लेकिन यह कहां से शुरू होता है? उदाहरण के लिए, यदि मेरे पास कोड है
int main (int argc, char **argv)
{
int retval;
printf ("This is most definitely the parent process\n");
fflush (stdout);
retval = fork ();
printf ("Which process printed this?\n");
return (EXIT_SUCCESS);
}
आउटपुट है:
यह निश्चित रूप से मूल प्रक्रिया है
जो इस प्रक्रिया को मुद्रित करती है?
किस प्रक्रिया ने इसे छापा?
मैंने सोचा कि fork()
यह एक ही प्रक्रिया बनाता है, इसलिए मैंने शुरू में कहा था कि उस कार्यक्रम में, fork()
कॉल को पुनरावर्ती रूप से हमेशा के लिए कहा जाएगा। मुझे लगता है कि कॉल के fork()
बाद से बनाई गई नई प्रक्रिया शुरू होती है fork()
?
यदि मैं एक माता-पिता और बच्चे की प्रक्रिया के बीच अंतर करने के लिए, निम्न कोड जोड़ता हूं,
if (child_pid = fork ()) printf ("This is the parent, child pid is %d\n", child_pid);
else printf ("This is the child, pid is %d\n",getpid ());
कांटा () कॉल के बाद, बच्चे की प्रक्रिया कहां से शुरू होती है?
man fork
आपके सवाल का जवाब देने के लिए पर्याप्त है, btw