এটি ইন্টারফেস সহজতর করা। বিকল্প fork
এবং exec
উইন্ডোজ 'ভালো কিছু হবে CreateProcess ফাংশন। কতগুলি পরামিতি CreateProcess
রয়েছে তা লক্ষ্য করুন এবং এর মধ্যে অনেকগুলি আরও বেশি পরামিতি সহ স্ট্রাক্ট রয়েছে। এটি কারণ যে আপনি নতুন প্রক্রিয়াটি সম্পর্কে নিয়ন্ত্রণ করতে পারেন এমন সমস্ত কিছু করতে হবে CreateProcess
। আসলে, CreateProcess
পর্যাপ্ত প্যারামিটার নেই, তাই মাইক্রোসফ্টের ক্রিয়েটপ্রোসেসস ব্যবহারকারী এবং ক্রিয়েটপ্রসেসউইথলগনডব্লু যোগ করতে হয়েছিল ।
fork/exec
মডেলটি সহ আপনার এই সমস্ত পরামিতিগুলির প্রয়োজন নেই। পরিবর্তে, প্রক্রিয়াটির নির্দিষ্ট বৈশিষ্ট্যগুলি জুড়ে সংরক্ষণ করা হয় exec
। এটি আপনাকে অনুমতি দেয় fork
, তারপরে আপনার পছন্দমতো যে কোনও প্রক্রিয়া বৈশিষ্ট্যগুলি পরিবর্তন করুন (আপনি সাধারণভাবে একই ফাংশনগুলি ব্যবহার করে) এবং তারপরে exec
। লিনাক্সে, fork
কোনও প্যারামিটার নেই এবং execve
কেবল 3 রয়েছে: প্রোগ্রামটি চালানো, এটি দেওয়ার জন্য কমান্ড লাইন এবং তার পরিবেশ। (অন্যান্য exec
ফাংশন রয়েছে, তবে execve
সাধারণ ব্যবহারের কেসগুলি সহজ করার জন্য এগুলি কেবল লাইব্রেরির প্রদত্ত কেবল মোড়ক )
আপনি কি অন্য কিছু বর্তমান ডিরেক্টরী সঙ্গে একটি প্রক্রিয়া শুরু করতে চাইলে: fork
, chdir
, exec
।
আপনি যদি স্টিডিন / স্টডআউট পুনর্নির্দেশ করতে চান:, fork
ফাইলগুলি বন্ধ / খুলুন exec
,।
আপনি সুইচ ব্যবহারকারীদের চাইলে: fork
, setuid
, exec
।
এই সমস্ত জিনিস প্রয়োজন হিসাবে একত্রিত করা যেতে পারে। যদি কেউ নতুন ধরণের প্রক্রিয়া বৈশিষ্ট্য নিয়ে আসে তবে আপনাকে পরিবর্তন করতে হবে না fork
এবং exec
।
যেমন উল্লেখ করা হয়েছে, বেশিরভাগ আধুনিক ইউনিক্সগুলি অনুলিপি-অনুলিপি ব্যবহার করে, তাই fork
উল্লেখযোগ্য ওভারহেড জড়িত না।
fork(2)
লিনাক্সের অধীনে ম্যান পেজটি বলেছেন:Under Linux, fork() is implemented using copy-on-write pages, so the only penalty that it incurs is the time and memory required to duplicate the parent's page tables, and to create a unique task structure for the child.
আমি কল্পনা করেছি (তবে নিশ্চিতভাবে জানি না) অন্যান্য আধুনিক ইউনিক্স স্বাদের ক্ষেত্রে এটিই।