আমি ইউনিক্স প্রোগ্রামিং শিখার চেষ্টা করছি এবং কাঁটাচামচ () সম্পর্কিত একটি প্রশ্ন এসেছি across আমি বুঝতে পারি যে কাঁটাচামচ () বর্তমানে চলমান প্রক্রিয়াটির একটি অভিন্ন প্রক্রিয়া তৈরি করে, তবে এটি কোথায় শুরু হয়? উদাহরণস্বরূপ, যদি আমার কোড থাকে
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
আপনার প্রশ্নের উত্তর দেওয়ার জন্য যথেষ্ট নিশ্চিত, বিটিডব্লিউ