 بسم اللہ الرحمن الرحیم، آج ہم موڈیول 104 دیسکس کریں گے، موڈیول 104 ہے get a job number اس سے پریویسلی ہم نے دیسکس کیا تھا ایک job shell دیسکس کی تھی جس کے اندرگے ہم نے تین سیمپل کمائنڈز بنائیں تھی ایک job کو بگن کرنے کے لیے ہے ایک jobs کو دیسکلے کرنے کے لیے اور ایک job کو کل کرنے کے لیے ہیں اسی کو ہم آگے لے کے چل رہے ہیں اس کے اندر ہم نے ایک جگہ ایک data structure جو ہے وہ کنسٹرکٹ کیا تھا اس data structure جو ہے کہ مدہ سے ہم ایک file کے اندر information رکھ رہے تھے تمام jobs کی اور وہاں ہمیں ہم نے اس ایک function بھی use کیا تھا جس function کے مدہ سے ہم job number get کر رہے تھے جب بھی ایک process create کر رہے ہیں تو اس کو job number سائن کیا جا رہا ہے اس job number کی گینسٹ اس کو ایک file کے data structure کے اندر place کیا جا رہا ہے تو اس طرح سے ایک file populate ہوتی جا رہی ہے اور جب کبھی بھی آپ کو ضرور پڑتی ہے ایک job کے پر کوئی operation perform کرنے کے لیے کچھ اس کی information get کرنے کے لیے یا information change کرنے کے لیے تو آپ اس file کے اندر look up کر کے اس information کو get کر سکتے ہیں تو یہ یہاں پر exactly یہاں کام کرے گا ہمارا operation اس لیے ہم نے ایک function منایا get job number یہ function جو ہے یہ کیا کرے گا یہ file میں سے جا کے جو بھی آپ process جس کا job number get کرنا چاہتے ہیں تو اس process کو search کرے گا اگر اس کو وہ مل جاتا ہے تو اس کا job number آپ کو return کر دے گا اور in case اگر وہ آپ کو نہیں ملتا تو اس کے لیے وہ آپ نیا نئی space کرے گا اور end میں جا کے اس کو append کر دے گا اور اس کی information file کے اندر place کر دے گا اس کی code دیکھتے اگر اس کا یہ prototype دیکھیں تو اس کے اندر job information then reference pass کریں اور ایک string pass کریں یہ in fact یہاں پہ header file show رہی ہے یہ والی header file جو ہے یہ ہمارے previous program کے اندر use ہوئی تھی اس header file کا نام رکھا ہے job management.h اس کے اندر مختلف اگر یہاں پہ آپ نے macros ڈیفائن کیا میں یہ ایک structure ہے اس structure کے اندر کیا انفرمیشن ہے اس کے اندر process ID ہے اور اس کے اندر command line سے جو آپ کو information media ہوئے اب جب بھی ایک process create ہوتا جب process create ہوتا تو file کے اندر یہ انفرمیشن place ہو جاتی پہلہ process create ہوا اس کا ID سے 123 اور command line کے پر جو information تھی اگلہ create ہوتا تو اس کی جو بھی ID اور command line کے پر جو information تھی and so on اس طرح یہ انفرمیشن جو ہے یہ file کے اندر populate ہوتی جائے یہاں یہاں پہ ایک اور macro اس gm job یہ کس کے برابر ہوگا یہ size of gm job gm job جو ہے وہ آپ کا یہ structure ہے یہ والا structure ہے جس structure کے اندر آپ نے ایک one line اور process کا ID جو ہے وہ store کیا ہے اور پھر اسے یہ associated 4 functions ہے ایک display job find process ID اور get job management file name ہم نے in functions کو previously ہماری شلوالا program تھا in functions کو use کیا اب in functions کیا ہم تھوڑی تھوڑی detail discuss کریں گے basically ایک header file جو کہ آپ کے previous program کے اندر بھی اسی header file کا استمال ہوا تھا اس header file کا نام ہے job management dot h اس header file کے اندر structure کی information ہے یہ وہ structure ہے جو آپ کی file کے اندر store ہوگا پر example اس کے اندر دو fields ہے ایک process ID کی process ID آپ پلس کرتے ہیں اور ساتھ جو اس process کو command line تھی وہ structure کے اندر place ہوگی next آپ process کریٹ کرتے ہیں تو اس کا ڈ اور اس کی command line اس کا ID اور اس کی command line اس طرح سے file جو ہے وہ populate کی جائے گی اور پھر اس دیتہ structure کے اوپر operation perform کرنے کے لیے آئے کے پاس یہاں پر تین function ہے get job number display jobs اور find process ID اور یہ بھی ایک function ہے چھوٹا سا جو کہ file name get کرنے کے لیے job management file name get کرنے کے لیے use ہوگا اب فلحال ہم یہاں پر get job number والا جو function ہے اس کو لکھیں گے اس کو آپ بسکلی ایک process information structure پاس کر رہے ہیں اب آپ کیا کریں گے یہ function کیا کر رہا ہے یہ function file میں سے job structure پڑے میں ان کو read کر رہا ہے اور اس process information کو match کر رہا ہے اگر اس کو process information مل جاتی ہے تو ٹھیک ہے وہ پڑیوی information یہ return کر دے گا اگر اس کو نہیں ملتی تو پھر اس صورت کے اندر یہ اگر اس کے پاس گنجائش ہوئی تو یہ ایک اور record کرے گا اور file کے ساتھ وہ append ہو جائے گا اس لیے اس کے اندر کوئی limit رکھی ہوئی ہے انہوں نے کہ کتنی limit تک ایسا وہ کر سکتا ہے پیچھے یہاں پہ job is allowed maximum job is allowed 10,000 تو 10,000 تک jobs اس کے اندر allowed اس کو چینج بھی کیا جا سکتا تو 10,000 تک اس طرح آپ کر سکیں کہ اس کے beyond پھر نیا process add نہیں ہو سکے گا اب یہاں پہ کیا کریں آپ یہاں پر بسکلی آپ نے file get کی job management file کا نام get کیا پھر آپ اس file کو create file کی مدد سے open کرے ہیں for read اور ان کے اس کو error آجاتا تو آپ ایدر error report کریں once file open ہو جاتی ہے پھر آپ نے اس کے اندر اس file کو read کرنے کے لیے get file size ex آپ نے file size get کیا اور پھر جو point is وگرہا ہے ان کو آپ نے set کر لیا file کو ایدر lock کریں lock اس لیے کریں کیونکہ concurrent processing ہیں تو file کے اوپر جب بھی آپ نے کوئی read write operation پر پر فرم کرنے ہے تو سے پہلے file کو lock کرنا پڑے گا پہلے آپ نے file lock کر دی اس case کے اندر آپ دیکھیں کہ آپ نے کتنا part lock کیا میرا خیلہ پوری کی پوری file کو lock کر دی ہے کیونکہ یہاں پہلے 0 ہے اور یہاں پہل size ہے تو پوری کی پوری file کو آپ نے lock کر دی ہے اب یہاں پہ یہ ایک loop چل رہا ہے کب تک چلے گا maximum jobs allow تک چلے گا اور ہر record کو read کرا اور اس record کے اندر پڑے بے جو process idea اس کو وہ دیکھ رہا اگر process idea اس کو 0 مل جاتا ہے اس کا مطلب ہے کہ اس کو کوئی جگہ مل گئے جاں پہ کوئی process exist نہیں کرا مقصد اس function کیا ہے کہ یہ ایسے کوئی job کی location آپ کو return کرے file میں ایسی location return کرے جاں پہ ہم نیا job place کر سکتے اگر id 0 ہے اس کا مدر وہاں پہ جو process تھا وہ terminate ہو گیا وہاں پہ id 0 آگیا اگر وہاں پہ non-zero value پڑی بھی اس کا مطلب ہے کوئی ایسا process ہے جو بھی چل رہا اور پھر آپ اس کا process idea اٹھا کے اس کو open process کرکے بھی چیک کر سکتے ہیں کہ اس کی exit code کیا ہے اور exit code سے آپ کو پتہ چلے گا کہ still active ہے یا نہیں ہے ان case still active تو پھر آپ کا یہ loop again چلتا رہے گا اگر job number اس loop میں چلتے جلتے max job سے seat کر گیا تب بھی یہ function return ہو جائے گا in the end کیا کریں گے کہ جو بھی آپ نے create کیا ایک نیا job اس کی job information ہے اس کو file کے اوپر write کر دیے جائے گا دو اس کندہ situation ہیں ایک situation یہ ہے کہ یہ records دوننہ شروع کرتا اور اس کو بیچ میں ایک record مل جاتا جاں پہ zero پڑھا اس کا مطلب ہے یہ vacant ہے تو یہاں پہ نئے process کو place کیا جا سکتا یہاں پہ وہ pointer return کرے گا اور اس pointer کے اوپر آپ یہاں write کر سکیں گے یا پھر دوسی situation ہے کہ کرتے کرتے یہ بالکل end تک پہن جتا ہے اگر end تک پہن جتا ہے اور jobs کی limit پوری نہیں ہوئی تو یہ end میں جاکے جو information ہے اس کو write کر دے گا تو دون سورتوں کے اندر آپ کا جو logic ہے وہ work کر رہا ہے اس variable کی مدسہ آپ کو پتہ چلے گا کہ ابھی end of file آیا ہے یا نہیں آیا اور اس کے according لی پھر آپ pointer کی position کو سیٹ کر کے وہاں پہ جاکے write file cooperation پر پرفوم کریں گے اور جو بھی آپ کا ڈیٹا اس کو write کر دیں گے once write ہو جاتا پھر آپ file کو unlock کر دیں گے file کو unlock کر دیں گے اور exactly وہی parameters کے ساتھ unlock کریں گے تاکہ کوئی دوسرا شل جو ہے وہ اس file کو use کر سکے