 بسم اللہ الرحمن الرحیم، آج ہم موڈیول 95 دیسکس کریں گے، موڈیول 95 ہے باوت ایکزیٹنگ اور ترمینیٹنگ کا پروسس، ہم یہ دیکھیں گے کہ اگر آپ نے ایک پروسس کو ایکزیٹ کرنا ہے یا ترمینیٹ کرنا ہے کیسے کیا جائے گا اور کس طریقے سے آپ کو کیرفل ہونا چاہیے جا پر کوشنز ہے تو سب سے پہلے ایکزیٹ پروسس کو دیکھتے ہیں، ایکزیٹ پروسس کے لئے سمplی ایک اگر آپ پر ایک پروگرام کو ایکزیٹ کرنا چاہتے ہیں تو اس کے لئے سمپل ایک ایکزیٹ پروسس بیوز ہوتی ہے، آپ اس ایکزیٹ کو کال کریں گے، پروگرام ایکزیٹ ہو جائے گا پروگرام کے ایکزیٹ ہونے سے کیا ہوگا، کیا of course یہ فنکشن کال کریں گے ویسے تو فنکشن رٹن کرتا ہے لیکن in fact یہ کیا کرے گا، پروگرام کو ختم کر دے گا اس کے ایکزیٹن، ختم کر دے گا جو تھریڈ اس کے اندر چل رہی ہے جو میکن پروسس چل رہا ہے وہ دونوں ترمینیٹ ہو جائیں گے اس کے لعan ہم نے دیکھا تھا کہ جو ایکسپشن ہینڈلنگ ہوتی اس کے اندر ایک ترمینیشن ہینڈلر ہوتا ہے، ترمینیشن ہینڈلر اس کیس میں ایکزیٹ نہیں ہوگا اگر آپ خود سے ایکزیٹ پروسس کو کال کر گا، پروسس کو ایکزیٹ کرتے ہیں تو اس کیس میں ترمینیشن ہینڈلر ایکزیٹ نہیں ہوگا پھر ہم نے یہ دیکھا کہ ڈیلالز بھی اے پوگرم پر سے لیکن ہوا جب practitioners4 ڈیلال لیہahah Shit لیہَ ایسیت ف وہا foolish ڈیلال ڈیiba رہو ایکسپشن ڈی Cela تو اس کےل میں قس میں جو DLL آٹاچ ہوئی بھی وہ دیتاچ ہوگی یعنی کے اس DLL کے اندر DLL میں کال ہوگا ایکزٹ پروسس کرنے کے لیے آپ یہ پی آئی دیکھ سکتے ہیں بڑی سمپل اپی آئی ہے ایکزٹ پروسس کال کریں گے اور اس کو آپ ایکزٹ کود پاس کریں گے بعد میں اس ایکزٹ کود کو چیک کر کے بتایا جا سکتا ہے کہ اس پروسس کے ایکزٹ ہونے کی کیا بجاتی اگر پوگرام کے اگزٹ ہونے کے بعد آپ اگزٹ کوٹ get کرنا چاہتے ہیں اگزٹ کوٹ get کرنے کے لیے سمپل ایک API یہاں get exit code process یہ آپ کو اس پروسس کی اگزٹ کوٹ ریٹن کر دے گی اس API کو آپ پروسس کا ہندل پاس کریں گے اور یہ آپ کو ایک long pointer کے اندر اگزٹ کوٹ ریٹن کر دے گی ایک h process جو ہے وہ process کا ہندل ہے اور اس پروسس کے اندر process query information flag جو ہے وہ ضرور سیٹ ہونا چاہیے اگر all option سیٹ ہے جس کے اندر کے تمام کسم کے rights ہوتے ہیں آپ کو process کے اوپر وہ بھی ٹھیک ہے لیکن at least process query information کا flag ضرور سیٹ ہونا چاہیے other wise یہ فیل ہو جائے گا lp exit code ایک long pointer یہ ایک double word کو point کرے گا اس double word کے اندر آپ کی exit code پڑی ہوگی تو یہ exit code ریٹن نہیں کرا یا آپ کو ایک Boolean value ریٹن کر رہا جس سے آپ کو یہ پتا لگ رہا ہے کہ یہ فیل ہویا ہے یا نہیں ہویا اور پھر اگر exit ہوتا تو exit code کے اندر ایک جو نورملی عام طور پر value return ہوتی ہے that is still active اگر still active value return ہی ہے تو اس کا مطلب ہے کہ جی program ابھی active ہے ابھی exit نہیں ہوا پھر اسی طرح آپ کسی دوسر process کو terminate بھی کر سکتے ہیں terminate کرنے کے لیے جو API use ہوتی ہے that is terminate process اس کی details دیکھتے ہیں اس API کے اندر اب وہی اسی طرح سے ہی process کا handle پاس کریں گے اور exit code پاس کریں گے جس process کو آپ نے terminate کرنا ہے اس کا handle age process کے اندر ہوگا اور جس code کے ساتھ terminate کرنا ہے اس کو آپ exit code کے اندر place کرتے ہیں اور as a result جو ہے process terminate ہو جائے گا process جب آپ terminate کرتے ہیں تو آپ کو پہدونا چاہیے کہ اس کی کیا repercussions ہیں اس سے کیا results produce ہوں گے جب بھی آپ نے process کو exit کرنا ہے یا terminate کرنا ہے آپ کو careful ہنا پڑتا ہے جب آپ ایک process terminate کرنے لگیں یا exit کرنے لگیں آپ نے number of resources جو اپنے لیے allocate کیا میں ان کے handles open ہے تو اگر آپ exit process کرنے لگیں تو آپ ان handles کو پہلے close کریں اور جو بھی اس طرح سے آپ کے پاس resources ہیں ان تمام resources کو release کریں اگر نہیں release کریں گے اور process exit ہو جائے گا تو of course آپ کو پتا ہے کہ اس کی کیا results ہیں آپ کے resources ہیں وہ ابھی بھی engaged رہیں گے عام طور پر program کے اندر exit process کو call نہیں کیا جاتا ہے یا program کے اندر exception handler ہے اس کے اندر exit process کو call کیا جاتا ہے اور ایسا کرنے سے پہلے resources نے ان کو relinquish کروالی ہوتے because exit process ہمیں پتا ہے کہ اگر simple آپ exit process کرنے گے program terminate ہو جائے گا اور جو بھی handles open تھے وہ open کے open نہیں رہیں گے اس کو close کرنے گا ان کو chance نہیں ملے گا اور دوسری important چیز یہ ہے کہ جب آپ terminate process کرتے ہیں تو terminate صرف یہ نہیں کہ exception handlers جو ہیں ان کو bypass کرتا ہے وہ بلکہ جو DLL main اس کو بھی bypass کر دے گا یعنی کہ اس process کے ساتھ جو DLLs attach ہی ہی ہی ہی ہی ان attached DLLs کے اندر بھی handles کو ہی open ہوئے ہوں گے تو DLLs کو بھی موقع نہیں ملے گا کہ جو resources handles اوپن ہوئے وہ close کر سکیں کیونکہ DLL main detach کے ساتھ پھر سے call کرنے کا اس کو chance نہیں ملے گا تو جب process terminate کرتے ہیں تو جو attached process ان کو detach کی request نہیں جاتے DLL جو بھی attached ہیں ان کو بھی detach کا signal نہیں جاتا جبکہ exit کی case کے اندر detach کا signal DLLs کو جاتا ہے یہاں میں ہمیں کچھ چیزوں کا پتا ہونا چاہیے کیونکہ exit اور terminate کرتے وقت you have to be very careful اگر آپ غل تری کیسے exit کرتے ہیں یا غل تری کیسے terminate کرتے ہیں تو اس کی repercussions ہو سکتی ہیں اس میں یہ آپ کو پتا ہونا چاہیے کیونکہ جب آپ exit process کرتے ہیں تو exit process جو آپ کو اس چیز کا chance نہیں دے گا کہ آپ exit ہونے سے پہلے handles کو جو ہے close کر سکیں تو بیتر یہ ہوتا ہے کہ آپ اپنے program کے اندر کہیں پر بھی exit process کا نا کال کریں آپ اس کو exception handling کے اندر use کر سکتے ہیں اس کے اندر terminate termination block بناتے ہیں exception handlers کے اندر وہاں پہ آپ exit process کا function جو ہے اس کا استعمال کر سکتے ہیں وہ آپ کو properly chance دے سکتے ہیں کہ آپ ایسا کرنے سے پہلے جو handles open کیا تھے ان کو close کر رہے ہیں اور terminate process جو ہے وہ آپ کو dll detach کرنے کا بھی chance نہیں دے تھا وہ آپ کو exception handlers ہیں ان کو بھی execute کرنے کا chance نہیں دے تھا یعنی کہ آپ terminate process کر کے ایک process کو terminate کرتے ہیں تو کوئی exception handlers بھی نہیں invoke ہوگا اور ساتی ساتh dll main جو بھی کوئی dll main کو detach کا بھی signal نہیں جائے گا عام طور پہ اگر کوئی ایک dll attach ہوتی ہے تو جب program terminate ہوتا ہے اگر static linking ہوری ہے تو اس program کی terminate ہونے پہ واپس dll کو detach کا signal جاتا ہے کیونکہ dll کے اندر بھی ہو سکتا ہے کچھ handles open ہو وہاں پہ dll ان hendens کو close کر لیتی جب detach کا signal جاتا ہے لیکن جب آپ process کو terminate کرتے ہیں تو اس کس کے اندر dll کو detach کا signal بھی نہیں جائے گا جس کے وجہ سے memory leakage ہو سکتی ہے garbage collection آپ کو سیترے کیسے کرنی چاہیے تو ان دونوں کو استعمال کرتے بھی ان دونوں چیزوں کا آپ کو پدانا چاہیے کہ terminate کرنے کی کی کیا repercussions ہیں اور exit کرنے کی کیا repercussions ہیں