fork()
আদিম প্রায়ই কল্পনা প্রসারিত। যতক্ষণ না আপনি এটির জন্য কোনও অনুভূতি পান, আপনার প্রতিটি অপারেশন কী তা কাগজে সন্ধান করা উচিত এবং প্রক্রিয়া সংখ্যার জন্য অ্যাকাউন্ট করা উচিত। ভুলে যাবেন না যে কাঁটাচামচ () বর্তমান প্রক্রিয়াটির একটি নিখুঁত-নিখুঁত অনুলিপি তৈরি করে। সর্বাধিক উল্লেখযোগ্য পার্থক্য (বেশিরভাগ উদ্দেশ্যে) হ'ল fork()
পিতা-মাতার এবং সন্তানের মধ্যে ফেরতের মান পৃথক। (যেহেতু এই কোডটি ফেরতের মানটিকে উপেক্ষা করে, তাই এটি কোনও পার্থক্য করে না)
সুতরাং, প্রথমদিকে, একটি প্রক্রিয়া আছে। এটি একটি দ্বিতীয় প্রক্রিয়া তৈরি করে, উভয়ই বিন্দু এবং লুপ মুদ্রণ করে। তাদের দ্বিতীয় পুনরাবৃত্তিতে, প্রত্যেকটি অন্য কপি তৈরি করে, সুতরাং চারটি প্রক্রিয়া একটি বিন্দু মুদ্রণ করে, এবং তারপরে প্রস্থান করতে পারে। সুতরাং আমরা সহজেই আপনার প্রত্যাশা মতো ছয়টি বিন্দুর জন্য অ্যাকাউন্ট করতে পারি।
যাইহোক, আসলে printf()
কি করে তা তার আউটপুটটি বাফার করে। সুতরাং যখন কেবল দুটি প্রক্রিয়া ছিল তখন থেকে প্রথম বিন্দুটি লেখার সময় উপস্থিত হয় না। এই বিন্দুগুলি বাফারে রয়ে গেছে - যা কাঁটা () এ নকল করা আছে is প্রক্রিয়াটি প্রস্থান হতে চলে না যাওয়ার পরে বাফার ডট প্রদর্শিত হবে। চারটি প্রক্রিয়া একটি বাফার ডট মুদ্রণ করে, এবং নতুনটি 8 টি ডট দেয়।
যদি আপনি এই আচরণটি এড়াতে চান, তবে fflush(stdout);
পরে কল করুন printf()
।