 بسم اللہ الرحمن الرحیم آج ہم موڈیول 97 دسکس کریں گے موڈیول 97 ہے is about environment blocks شاید ہم نے پہلے بھی یہ کچھ دسکس کیا ہوگا environment block کے بارے میں ہر process کا اپنا ایک environment block ہوتا ہر process کسی نہ کسی environment block کے ساتھ associate ہوتا اور environment block کے اندر کیا انفرمیشن ہوتی ہے بڑی سمپلسی انفرمیشن ہوتی ہے اس کے اندر مختلف environment سے relevant strings ہوتی ہے یعنی کہ کوئی ایک variable ہوگا اور اس کے against اس کی ایک کوئی string value ہوگی اور ان دونوں کے بیچ میں equal to کا sign ہوگا اس طرح کی strings بنی ہوتی ہے environment block کے اندر اور وہ environment block کے اندر stored ہوتی ہے environment block جو ہے وہ process کا part نہیں ہوتا process سے بہر ہے لیکن process کے ساتھ associated ہے ہر process کا اپنا ایک environment block ضرور ہوگا strings جو ہے وہ null terminated ہوتی ہے ان کے end میں null ہوگا یعنی کہ zero ہوگا slash zero اور اس کی ایک جو بہت common example ہے that is the path string path string ہوتی ہے windows.it windows کے اندر define ہی windows کے اندر ہر program کو this path string کی زود پڑتی ہے جسے اسے پڑا چلتا ہے کون سب پیات ہے جس کے اندر executable files پڑی ہو سکتی ہے تو یہ کامت اور پر string use ہوتی ہے among different programs تو یہ کہاں سے آتی ہے یہ environment میں سے آتی ہے environment block کے اندر information پڑی ہوتی ہے جو environment variables ہیں ان کو ہم get بھی کر سکتے ہیں ان کو set بھی کر سکتے ہیں ان کی values کو change بھی کر سکتے ہیں ایسا کرنے کے لیے certain apis use ہوتی ہے یہ وہ 2 apis ہے ایک get کرنے کے لیے اور ایک set کرنے کے لیے get environment variable اس کے اندر آپ اس کا name specify کریں گے lp name یہ ایک string ہوگی یہ آپ اس کو string specify کریں گے اور lp buffer کے اندر اس environment variable کی value آجائے گی اور n size کے اندر اس کا size size یعنی کہ string کا size پوری جو جس string کو آپ نے get کیا اور اسی طرح set environment variable اس کے اندر آپ name specify کریں گے اور 7 value specify کریں گے name جو specify کریں گے اس کے اندر آپ اس کا name specify کریں گے variable کا اور value جو یہ ایک string ہوگی تو اس variable کو یہ value assign ہو جائے گی عام طور پہ جب child process کوی create کیا ہوتا ہے تو آپ کو lp environment کے اندر environment بھی specify کرنے پڑتی ہے یہ جو environment ہے اس کو آپ چاہے تو parent کی environment کے ساتھ شیر کر سکتے ہیں اگر اس کے اندر lp environment کے اندر null place کیا جائے گا اگر اس کے اندر null place کیا ہوا ہے at the time of create process تو اس کے اندر child process بنے گا وہ parent process کی environment کو share کرے گا اور کوئی بھی process جو ہے وہ اپنے environment variables کو چینج کر سکتا ہے نے variables اس کے اندر add کر سکتا ہے modify کر سکتا اگر آپ کسی ایک environment variable کو چینج کرتے ہیں تو lp name کے اندر تو آپ اس variable کا name specify کریں گے اگر آپ اس کو set کرنا جا رہے ہیں set environment variable کی مدل سے تو اگر وہ string already نہیں exist ہوتی کرتی تو environment variable کے اندر وہ string کے لیے ایک اور new entry بن جائے گی اور اگر وہ exist کرتی ہے تو جو بھی آپ نے new values کو سائن کیا وہ modify ہو جائے گی اور اگر آپ نے اس کو value سائن کیا وہ null ہے تو اس کے اندر اس string کے اندر جو بھی پڑی بھی value ہے یعنی کہ وہ جو variable ہے وہ environment block میں سے ختم ہو جائے گا get environment variable سے آپ environment variable کی value کو get کر سکتے ہیں اگر آپ نے اس function کو use کیا اور آپ کو 0 return ہوتا ہے تو اس کا مطلب ہے جس variable کی value کو آپ get کرنا چاہ رہے ہیں وہ exist نہیں کرتا پھر جب آپ اسی environment variable value کو get کرتے ہیں تو آپ اس کا size بھی آپ اس پیسفائے کرتے ہیں n size ان کیس یہ size exact size نہیں ہے اصل size سے بڑا size ہے تو اس صورت میں کیا ہوتا اس صورت میں اگر آپ اس کی value get کرتے ہیں اور اس value کا جو size ہے وہ given size سے کام ہے تو جو actual value کا size ہے وہ آپ کو return کرتا ہے یہ function یہاں پر ایک اور چیز ہم ایڈ کرنا چاہیں گے جب آپ create process کرتے ہیں تو typically create process کے اندر جو access right آپ سپیسفائے کرتے ہیں وہ ہوتے ہیں process all access process all access کم ہوتا ہے اس کو ہر طرح کی axis حاصل ہے مثل process query information query information یہاں میں ضرور پڑتی ہے جب ہم نے process کی کوئی information query کرنی ہے create process اگر آپ کوئی اور process create کرنا چاہتے ہیں جب process کو terminate کرنا چاہ رہے ہیں process set information اس کی information کو change کرنا چاہ رہے ہیں handle کو duplicate کرنا چاہ رہے ہیں duplicate handle اور handle کو create کرنا چاہ رہے ہیں create handle تو یہ مختلف آپ کے پاس options available اس میں سے ہم نے دیکھا تھا کہ جو terminate کرنے والا سام ہے وہ اس کے لیے تھوڑا سا careful ہونا بڑھتا ہے عام طور پہ child کی پاس یہ right نہیں ہونا چاہے کہ وہ اپنے آپ کو terminate کرے اگر وہ terminate کرتا ہے it has to be very careful تو عام طور پہ یہ right child کو نہیں دیا جاتا process جو parent process ہوتا اسے کی پاس یہ right ہوگا کہ وہ child کو terminate کر سکے