Python OS প্রস্থান করুন

Python Os Prasthana Karuna



পাইথনের অপারেটিং সিস্টেম মডিউল অপারেটিং সিস্টেমের সাথে প্রেরণের জন্য বিভিন্ন সরঞ্জাম সরবরাহ করে। এই মডিউলটি অপারেটিং সিস্টেমের উপর নির্ভরশীল বৈশিষ্ট্যটি ব্যবহার করার একটি মডুলার পদ্ধতি অফার করে। পাইথন প্রোগ্রামিং ভাষায় বিভিন্ন পদ্ধতি ব্যবহার করা হয় এবং 'পাইথন ওএস এক্সিট' তাদের মধ্যে একটি। এই ফাংশনটি ব্যবহার করে, কেউ ক্লিনিং হ্যান্ডলার বা ফ্লাশিং বাফার না চালিয়ে একটি নির্দিষ্ট স্থিতি সহ একটি পাইথন প্রক্রিয়া শেষ করতে পারে, উদাহরণের জন্য, একটি 'os ফর্ক()' সিস্টেম কলের মাধ্যমে, যেখানে এই ফাংশনটি সাধারণত চাইল্ড প্রক্রিয়ায় ব্যবহার করা হয়।

একটি কম্পিউটার ফাংশন অনেক কম্পিউটার অপারেটিং সিস্টেমে একটি এক্সিট সিস্টেম কল শুরু করার মাধ্যমে তার কার্য সম্পাদন শেষ করতে পারে। একটি মাল্টিথ্রেডিং সিস্টেমে, একটি প্রস্থান প্রায়ই একটি অপারেশনাল থ্রেড বন্ধ করার প্রতীক। অপারেটিং সিস্টেম রিসোর্স ম্যানেজমেন্টের জন্য ফাইল এবং মেমরি সহ রিসোর্স পুনরুদ্ধার করে। কিন্তু, যদি আমরা প্রস্থান করার জন্য স্ট্যান্ডার্ড সম্পর্কে কথা বলি, তাহলে এটি সম্ভবত 'sys.exit(n)' পদ্ধতি হবে।







বাক্য গঠন

পাইথন ওএস প্রস্থান পদ্ধতির সিনট্যাক্স নীচে দেওয়া হল:




পাইথন ওএস প্রস্থান পদ্ধতির সিনট্যাক্স দুটি জিনিস নির্ধারণ করে: প্রথম অংশটি প্রক্রিয়াটির প্রস্থান অবস্থার প্রতিনিধিত্ব করে এবং এই মডিউলটি কোনো মান ফেরত দেবে না।



উদাহরণ # 1: কোনো ক্লিনআপ হ্যান্ডলারকে কল না করেই একাধিক প্রক্রিয়া থেকে প্রস্থান করার জন্য 'os._exit()' পদ্ধতি ব্যবহার করা

প্রস্থান পদ্ধতি যে কোনো অপারেটিং সিস্টেমে পরিচালিত হতে পারে, প্রাথমিকভাবে 'উইন্ডোজ' বা 'লিনাক্স' অপারেটিং সিস্টেমে। আমাদের প্রথম উদাহরণে, আমরা প্যারেন্ট প্রসেস এবং চাইল্ড প্রসেস হিসাবে ঘটছে একাধিক প্রসেস দেখব, যেখানে এটি ফাংশন বা প্রোগ্রামে ক্লিনআপ হ্যান্ডলারকে কল না করেই প্রসেসিং করে৷ এই মডিউলটি 'লিনাক্স' অপারেটিং সিস্টেমে আরও দক্ষতার সাথে কাজ করবে। এক্সিকিউট প্যারামিটারের জন্য একটি শূন্য মান সহ একটি থ্রেড ক্লিনআপ 'পপ()' ক্লিনিং হ্যান্ডলারকে কল করা হয়। সমস্ত ক্লিনআপ পদ্ধতি যেগুলি পুশ করা হয়েছে কিন্তু এখনও প্রকাশ করা হয়নি সেগুলি স্যানিটেশন স্ট্যাক থেকে পপ অফ করা হয় এবং থ্রেড বন্ধ হয়ে গেলে লাস্ট-ইন এবং ফার্স্ট-আউট (LIFO) অর্ডারে কার্যকর করা হয়, কিন্তু এই উদাহরণে এটিকে কল করার দরকার নেই।






পাইথন ওএস প্রস্থানের আমাদের প্রথম উদাহরণের কোড স্নিপেট নীচে ব্যাখ্যা করা হয়েছে:

আমাদের ডিভাইসের অপারেটিং সিস্টেমের সাথে লিঙ্ক করার শর্ত এবং শর্তাবলী করার বিষয়ে আমরা উদ্বিগ্ন থাকায় 'os' এর লাইব্রেরি আমদানি করে প্রোগ্রামটি শুরু করা হয়েছিল। তারপর আমরা 'পিআইডি' তৈরি করেছি এবং 'ওএস' লাইব্রেরির সাথে 'পাইথন' লিঙ্ক করেছি। আমরা এখন শর্তসাপেক্ষ বিবৃতি ব্যবহার করি যেখানে 'if' শর্ত হল 'PID 0 এর চেয়ে বড়'।



এর পরে, আমরা 'প্রিন্ট()' ফাংশন ব্যবহার করেছি, যা '\nপ্রসেসিং ইন প্যারেন্ট' বিবৃতিটি প্রিন্ট করতে হবে, যেখানে 'যদি' শর্তের মধ্যে কার্সারটিকে নতুন লাইনে স্থানান্তর করার জন্য '\n' ব্যবহার করা হয়। ভেরিয়েবল 'তথ্য' 'os.waitpid(pid,0)' এর কলিং শুরু হয়, যেখানে 'PID' '0' ব্যবধান থেকে শুরু হয়। আরও এগিয়ে যাওয়ার জন্য, আমরা 'os.WIFEXITED()'-এ আরেকটি 'if' শর্ত প্রয়োগ করেছি যেখানে আমরা এটির প্রক্রিয়াকরণের জন্য তথ্য বিবরণ '1' দিয়েছি। এটি 'python_code' এর ব্যবহারকারী-সংজ্ঞায়িত ফাংশনে তার প্রক্রিয়াকরণের তথ্য সংরক্ষণ করে, যা 'চাইল্ড কোড টু বি এক্সিট' এর প্রিন্ট স্টেটমেন্ট ধারণ করে এবং এটিকে 'প্রিন্ট()' ফাংশনের মধ্যে 'পাইথন_কোড' মান প্রদান করে।

এখন, আমরা আমাদের 'অন্য' অবস্থার দিকে আসি, যার চারটি মুদ্রণ বিবৃতি রয়েছে। প্রথম 'প্রিন্ট()' ফাংশনের বিবৃতিটি হল 'প্রসেসিং ইন চাইল্ড'। দ্বিতীয় প্রিন্ট স্টেটমেন্ট হল 'প্রসেসিং এর আইডি:' এবং এর সাথে, এটি 'os.getpid()' এর মান ধারণ করে, এটি শিশু প্রক্রিয়াকরণের জন্য পাইথনের কোড ফাইল ধারণকারী ফাংশন। এখানে ব্যবহৃত তৃতীয় প্রিন্ট স্টেটমেন্ট হল 'আরে পাইথন!!' এবং চতুর্থ মুদ্রণ বিবৃতি হল 'শিশু প্রক্রিয়াকরণ বিদ্যমান!' সবশেষে, আমরা আমাদের মূল মডিউলটি বিদ্যমান ফাইলটির প্রোগ্রাম এক্সিকিউশন থেকে প্রস্থান করার জন্য প্রয়োগ করেছি যা হল “os._exit()” এবং যেখানে “os.EX_OK” ভেরিয়েবলটি প্রসেসিংয়ের জন্য কোনো ফাংশন ফেরত না দিয়ে বরাদ্দ করা হয়েছে।


যেহেতু চাইল্ড প্রসেসিং প্রথমে চালানো এবং প্যারেন্ট প্রসেসিং থেকে প্রোগ্রামটি প্রস্থান করার জন্য অগ্রাধিকার কারণ এটির জন্য আরও সময় প্রয়োজন৷ সুতরাং, আউটপুট স্ন্যাপশটটি কেবল প্রিন্ট স্টেটমেন্টগুলি প্রদর্শন করে যা আমরা পূর্ববর্তী কোডে প্রদান করেছি, কিন্তু আমরা সিস্টেমে যে ফাইলটি তৈরি করেছি সেটি তার প্রসেসিং আইডি, “78695” প্রদর্শন করে, যা আমরা শেষ স্ন্যাপশটে দেখতে পাচ্ছি। এবং তারপরে, প্যারেন্ট এক্সিটের প্রক্রিয়াকরণ হবে '0' কারণ এটি পুঙ্খানুপুঙ্খ প্রক্রিয়াকরণের মধ্য দিয়েও যায় না কারণ, আরও কিছুর জন্য, এর জন্য হ্যান্ডলারের প্রয়োজন হয়৷

উদাহরণ # 2: বাফার ফ্লাশ না করে একটি সাধারণ প্রক্রিয়া থেকে বেরিয়ে আসার জন্য 'os._exit()' পদ্ধতি ব্যবহার করা

এই উদাহরণে, আমরা সিস্টেমের মাধ্যমে পড়া থেকে বিরতি চালানোর পরে সাধারণ সাধারণ প্রক্রিয়াকরণ এক্সিকিউশন প্রস্থান করার ঘটনাটি দেখব। এখানে, আমরা ফ্লাশিং বাফারগুলিও ব্যবহার করি না কারণ এটি প্রক্রিয়াকরণের জন্য প্রয়োজন হয় না। সর্বোপরি, 'os._exit' প্রক্রিয়া থেকে প্রস্থান করার জন্য আরও দক্ষতার সাথে কাজ করবে।


আসুন আমরা পাইথন লাইব্রেরি 'os' ইম্পোর্ট করেছি সেই কোডটি দেখি। প্রোগ্রামটি একটি ফর-লুপ দিয়ে শুরু হয় যেখানে আমরা কিছু ডেটা ধরে রাখতে 'p' ভেরিয়েবল ব্যবহার করি এবং এর রেঞ্জ '6' এ সেট করি। এর পরে, আমরা 'p' ভেরিয়েবলের উপর 'if' শর্ত প্রয়োগ করেছি, যা মোট ব্যবধানকে '4' এর সমান করে। প্রক্রিয়াকরণ সিস্টেমটি সূচী '0' থেকে শুরু হওয়ার সাথে সাথে এটি '0' থেকে '4' পর্যন্ত প্রক্রিয়া চালাবে। যত তাড়াতাড়ি কন্ডিশন মিলবে, যেটি 'p' এর মান 4 এর সমান হবে, প্রোগ্রামটি পরবর্তী স্টেটমেন্ট এক্সিকিউট করবে, যেটি হল 'print()' ফাংশন, এবং প্রসেসিং ইউনিট 'exit' প্রদান করবে। শেষ লাইনে, আমরা '0' থেকে শুরু করার পরে ফাংশন থেকে প্রস্থান করার জন্য 'os._exit()' ফাংশনটি ব্যবহার করেছি এবং তারপর প্রক্রিয়াকরণ বন্ধ করে দিয়েছি। শেষ পর্যন্ত, প্রসেসিং এর পরে ভেরিয়েবল “p”-এ সংরক্ষিত সমস্ত মান আউটপুট ডিসপ্লেতে প্রিন্ট করা হবে কারণ আমরা এটিতে “p” ভেরিয়েবল বরাদ্দ করে “print()” ফাংশন ব্যবহার করেছি।


আউটপুট ডিসপ্লে শুধুমাত্র '0', '1', '2', এবং '3' সংখ্যাগুলি প্রদর্শন করবে, কারণ এই চারটি সংখ্যা যা প্রক্রিয়াকরণের পরে পৌঁছেছে, এবং এর পরে, প্রক্রিয়াকরণটি একটি প্রস্থান হবে।

উদাহরণ #3: 'os._exit()' পদ্ধতি ব্যবহার করে এমন একটি প্রক্রিয়া থেকে প্রস্থান করা যা বাফারে বিদ্যমান নেই

কখনও কখনও, আমরা এমন কিছু প্রক্রিয়া পাস করার চেষ্টা করি যেগুলি প্রক্রিয়াকরণ সম্পাদন করা বা কোনও কারণে বন্ধ করা সিস্টেমের পক্ষে সহজ ছিল না - বেশিরভাগ ক্ষেত্রে যখন কোনও নির্দিষ্ট উপাদান, লাইব্রেরি বা ফাইল বরাদ্দের অস্তিত্বের কারণে নির্দিষ্ট প্রোগ্রামের জন্য প্রক্রিয়াকরণ অনুপস্থিত থাকে। .


আসুন আমরা আমাদের কোড স্নিপেটটি দেখি যেখানে আমরা 'সংখ্যা' একটি ভেরিয়েবল হিসাবে ব্যবহার করেছি এবং এটি '0' থেকে '7' এর মধ্যে সেট করেছি। এখন, আমরা 'if' শর্ত প্রয়োগ করেছি যেখানে 'সংখ্যা' '5' সূচকের সমান, এবং তারপর আমরা 'প্রস্থান' মান প্রিন্ট করতে 'প্রিন্ট()' স্টেটমেন্ট ব্যবহার করেছি। পরবর্তীতে, আমরা 'os._exit' এর মত প্রসেসিং থেকে বেরিয়ে আসার জন্য 'Rise SystemExit' এর একটি নির্দিষ্ট মডিউল ব্যবহার করেছি এবং প্রসেস শেষ হওয়ার পর 'Numbers' ভেরিয়েবলে সংরক্ষিত সংখ্যাগুলি প্রদর্শন করতে আবার 'print()' ফাংশন ব্যবহার করেছি।


আউটপুট স্ন্যাপশট স্পষ্টভাবে বর্ণনা করবে যে এটি প্রস্থান ব্যবহারের মডিউলের পরে 'সংখ্যা' মানগুলি প্রদর্শন করবে না। যেহেতু প্রধান উপাদান অনুপস্থিত, যেমন লাইব্রেরি এবং ইনিশিয়ালাইজেশন, তাই এটি প্রোগ্রাম প্রক্রিয়া করার পরে আউটপুট ডিসপ্লেতে 'খালি' ফিরে আসবে এবং কোনও মান না পড়েই ফিরে আসবে, অথবা এটি হতে পারে প্রোগ্রামটি কার্যকর করার জন্য যাবে না।

উপসংহার

এই নিবন্ধে, আমরা পাইথন ওএস প্রস্থান পদ্ধতি সম্পর্কিত তিনটি উদাহরণ নিয়ে আলোচনা করেছি। প্রথম উদাহরণে, আমরা পাইথন ওএস এক্সিট মডিউল ব্যবহার করেছি কোনো ফ্লাশিং এবং ক্লিনআপ হ্যান্ডলার ব্যবহার না করেই চাইল্ড প্রক্রিয়া থেকে প্রস্থান করতে। দ্বিতীয় উদাহরণে, আমরা বাফার ফ্লাশ না করে কোডের একটি সাধারণ প্রোগ্রামে প্রসেস এক্সিট-এ OS প্রস্থান মডিউল ব্যবহার করেছি। তৃতীয় উদাহরণটি অনুপস্থিত প্রক্রিয়াটি প্রস্থান করার সাথে সম্পর্কিত যা বর্তমানে উপস্থিত বা সিস্টেমে সংরক্ষিত নেই।