Python OS سے باہر نکلیں۔

Python Os S Ba R Nkly



Python کا آپریٹنگ سسٹم ماڈیول آپریٹنگ سسٹم کے ساتھ ترسیل کے لیے مختلف ٹولز پیش کرتا ہے۔ یہ ماڈیول آپریٹنگ سسٹم پر منحصر خصوصیت کو استعمال کرنے کا ایک ماڈیولر طریقہ پیش کرتا ہے۔ Python پروگرامنگ زبان میں مختلف طریقے استعمال کیے جاتے ہیں، اور 'Python os exit' ان میں سے ایک ہے۔ اس فنکشن کا استعمال کرتے ہوئے، کوئی بھی صفائی کے ہینڈلرز یا فلشنگ بفرز کو چلائے بغیر ایک مخصوص حیثیت کے ساتھ ازگر کے عمل کو ختم کر سکتا ہے، مثال کے طور پر، 'os فورک()' سسٹم کال کے ساتھ، جہاں اس فنکشن کو عام طور پر چائلڈ پروسیس میں استعمال کیا جاتا ہے۔

ایک کمپیوٹر فنکشن بہت سے کمپیوٹرز آپریٹنگ سسٹمز پر ایگزٹ سسٹم کال شروع کر کے اپنے عمل کو ختم کر سکتا ہے۔ ملٹی تھریڈنگ سسٹم میں، باہر نکلنا اکثر آپریشنل تھریڈ کے بند ہونے کی علامت ہوتا ہے۔ آپریٹنگ سسٹم وسائل کے انتظام کے لیے ان وسائل کو بازیافت کرتا ہے جن میں فائلیں اور میموری شامل ہیں۔ لیکن، اگر ہم باہر نکلنے کے معیاری کے بارے میں بات کرتے ہیں، تو یہ شاید 'sys.exit(n)' طریقہ ہوگا۔







نحو

Python os exit طریقہ کا نحو ذیل میں دیا گیا ہے:




Python os ایگزٹ میتھڈ کا نحو دو چیزوں کا تعین کرتا ہے: پہلا حصہ عمل کی ایگزٹ سٹیٹس کو ظاہر کرتا ہے، اور یہ ماڈیول کوئی قدر واپس نہیں کرے گا۔



مثال نمبر 1: کسی بھی کلین اپ ہینڈلر کو کال کیے بغیر ایک سے زیادہ عمل سے باہر نکلنے کے لیے 'os._exit()' طریقہ استعمال کرنا

ایگزٹ کا طریقہ کسی بھی آپریٹنگ سسٹم میں چلایا جا سکتا ہے، بنیادی طور پر 'ونڈوز' یا 'لینکس' آپریٹنگ سسٹم میں۔ ہماری پہلی مثال میں، ہم والدین کے عمل اور چائلڈ پروسیس کے طور پر ہونے والے متعدد عملوں کو دیکھیں گے، جہاں یہ فنکشن یا پروگرام میں کلین اپ ہینڈلر کو کال کیے بغیر پروسیسنگ کرتا ہے۔ یہ ماڈیول 'لینکس' آپریٹنگ سسٹم میں زیادہ مؤثر طریقے سے کام کرے گا۔ ایک تھریڈ کلین اپ 'pop()' ایک غیر صفر ویلیو کے ساتھ execute پیرامیٹر کلیننگ ہینڈلر کو بلانے کا سبب بنتا ہے۔ صفائی کے تمام طریقہ کار جنہیں آگے بڑھایا گیا ہے لیکن ابھی تک جاری نہیں کیا گیا ہے، صفائی کے اسٹیک سے باہر ہو جاتے ہیں اور تھریڈ بند ہونے پر آخری اور فرسٹ آؤٹ (LIFO) آرڈر میں عمل میں لایا جاتا ہے، لیکن اس مثال میں اسے کال کرنے کی ضرورت نہیں ہوگی۔






Python OS ایگزٹ کی ہماری پہلی مثال کے لیے کوڈ کا ٹکڑا ذیل میں بیان کیا گیا ہے۔

پروگرام 'os' کی لائبریری کو درآمد کرکے شروع کیا گیا تھا کیونکہ ہم اپنے ڈیوائس کے آپریٹنگ سسٹم کے ساتھ لنک کرنے کے لیے شرائط اور شرائط کو کرنے کے بارے میں فکر مند ہیں۔ پھر ہم نے 'PID' بنایا اور 'Python' کو 'os' لائبریری سے منسلک کیا۔ اب ہم مشروط بیان کا استعمال کرتے ہیں جہاں 'اگر' شرط ہے 'PID 0 سے زیادہ ہے'۔



اس کے بعد، ہم نے 'print()' فنکشن استعمال کیا، جس میں بیان کو پرنٹ کرنا ہوتا ہے '\n پروسیسنگ ان پیرنٹ'، جہاں '\n' کا استعمال کرسر کو 'if' حالت میں نئی ​​لائن میں منتقل کرنے کے لیے کیا جاتا ہے۔ متغیر 'معلومات' کو 'os.waitpid(pid,0)' کی کالنگ پر شروع کیا جاتا ہے، جہاں 'PID' '0' وقفہ سے شروع ہوتا ہے۔ مزید آگے بڑھتے ہوئے، ہم نے 'os.WIFEXITED()' پر ایک اور 'if' شرط کا اطلاق کیا جہاں ہم نے اسے اس کی پروسیسنگ کے لیے معلومات کی تفصیل '1' عطا کی۔ یہ اپنی پروسیسنگ کی معلومات کو 'python_code' کے صارف کے متعین فنکشن میں اسٹور کرتا ہے، جس میں 'Child Code to be Exit' کا پرنٹ اسٹیٹمنٹ ہوتا ہے اور اسے 'print()' فنکشن کے اندر 'python_code' کی قدر فراہم کرتا ہے۔

اب، ہم اپنی 'دوسری' حالت کی طرف آتے ہیں، جس میں چار پرنٹ اسٹیٹمنٹ ہیں۔ پہلے 'print()' فنکشن میں بیان 'Processing in Child' ہے۔ دوسرا پرنٹ اسٹیٹمنٹ ہے 'پروسیسنگ کی ID:' اور اس کے ساتھ، یہ 'os.getpid()' کی قدر رکھتا ہے، یہ فنکشن چائلڈ پروسیسنگ کے لیے Python کی کوڈ فائل پر مشتمل ہے۔ یہاں استعمال ہونے والا تیسرا پرنٹ اسٹیٹمنٹ ہے 'Hey Python!!' اور چوتھا پرنٹ اسٹیٹمنٹ ہے 'چائلڈ پروسیسنگ موجود ہے!' آخر میں، ہم نے اپنے مرکزی ماڈیول کو موجودہ فائل کے پروگرام کے عمل سے باہر نکلنے کے لیے لاگو کیا جو کہ 'os._exit()' ہے اور جہاں متغیر 'os.EX_OK' کو پروسیسنگ کے لیے کوئی فنکشن واپس کیے بغیر تفویض کیا گیا ہے۔


چائلڈ پروسیسنگ پہلے چلانے اور پروگرام کو پیرنٹ پروسیسنگ سے باہر کرنے کی ترجیح ہے کیونکہ اس میں زیادہ وقت درکار ہوتا ہے۔ لہذا، آؤٹ پٹ اسنیپ شاٹ صرف پرنٹ اسٹیٹمنٹس دکھاتا ہے جو ہم نے پچھلے کوڈ میں فراہم کیے تھے، لیکن جو فائل ہم نے سسٹم میں بنائی ہے وہ اس کی پروسیسنگ آئی ڈی، '78695' دکھاتی ہے، جسے ہم آخری سنیپ شاٹ میں دیکھ سکتے ہیں۔ اور پھر، پیرنٹ ایگزٹ کی پروسیسنگ '0' ہوگی کیونکہ یہ مکمل پروسیسنگ سے بھی نہیں گزرتا ہے کیونکہ، مزید کے لیے، اسے ہینڈلر کی ضرورت ہوتی ہے۔

مثال نمبر 2: بفروں کو فلش کیے بغیر عام عمل سے باہر نکلنے کے لیے 'os._exit()' طریقہ استعمال کرنا

اس مثال میں، ہم اس کو سسٹم کے ذریعے پڑھنے سے وقفوں کو چلانے کے بعد سادہ جنرل پروسیسنگ ایگزیکیوشن سے خارج ہونے والے رجحان کو دیکھیں گے۔ یہاں، ہم فلشنگ بفرز کا استعمال بھی نہیں کرتے ہیں کیونکہ پروسیسنگ کے لیے اس کی ضرورت نہیں ہے۔ آخر کار، 'os._exit' عمل سے باہر نکلنے کے لیے زیادہ مؤثر طریقے سے کام کرے گا۔


آئیے اس کوڈ کو دیکھیں جہاں ہم نے Python لائبریری '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' تک مقرر کیا۔ اب، ہم نے 'اگر' شرط کو لاگو کیا جہاں 'نمبر' '5' انڈیکس کے برابر ہیں، اور پھر ہم نے 'ایگزٹ' ویلیو پرنٹ کرنے کے لیے 'print()' اسٹیٹمنٹ کا استعمال کیا۔ اس کے بعد، ہم نے 'os._exit' کی طرح پروسیسنگ سے باہر نکلنے کے لیے 'raise SystemExit' کا ایک مخصوص ماڈیول استعمال کیا اور عمل کے ختم ہونے کے بعد متغیر 'نمبرز' میں ذخیرہ شدہ نمبروں کی نمائش کے لیے دوبارہ 'print()' فنکشن کا استعمال کیا۔


آؤٹ پٹ سنیپ شاٹ واضح طور پر بیان کرے گا کہ یہ ایگزٹ استعمال کے ماڈیول کے بعد 'نمبرز' کی اقدار کو ظاہر نہیں کرے گا۔ چونکہ اہم مواد غائب ہے، جیسے کہ لائبریری اور ابتداء، اس لیے یہ پروگرام پر کارروائی کرنے کے بعد آؤٹ پٹ ڈسپلے میں 'خالی' واپس آجائے گا اور کوئی قدر پڑھے بغیر واپس آجائے گا، یا یہ ہو سکتا ہے کہ پروگرام پر عمل درآمد نہ ہو۔

نتیجہ

اس آرٹیکل میں، ہم نے Python os ایگزٹ طریقہ سے متعلق تین مثالوں پر تبادلہ خیال کیا ہے۔ پہلی مثال میں، ہم نے کسی بھی فلشنگ اور کلین اپ ہینڈلر کے استعمال کے بغیر چائلڈ پروسیس سے باہر نکلنے کے لیے Python os ایگزٹ ماڈیول کا استعمال کیا۔ دوسری مثال میں، ہم نے بفر کو فلش کیے بغیر کوڈ کے ایک عام پروگرام میں پروسیس ایگزٹ میں OS ایگزٹ ماڈیول کا استعمال کیا۔ تیسری مثال غیر حاضر عمل کو چھوڑنے سے متعلق ہے جو فی الحال موجود نہیں ہے یا سسٹم میں محفوظ نہیں ہے۔