سی میں لینکس chdir سسٹم کال

Sy My Lynks Chdir Ss M Kal



ڈیوائس کی موجودہ ورکنگ ڈائرکٹری میں تبدیلیاں 'CHDIR' طریقہ استعمال کرتے ہوئے کی جاتی ہیں۔ مختلف حالات میں، آپ اپنے آلے کے موجودہ ورکنگ فولڈر کو تبدیل کرنے کا فیصلہ کر سکتے ہیں۔ یا آپ اپنی موجودہ ورکنگ ڈائرکٹری کے بجائے کسی فولڈر سے C اسکرپٹ چلانا چاہتے ہیں۔ اس کے نتیجے میں، اس مخصوص C کوڈ کو چلانے کے لیے، آپ کو اپنے موجودہ ورکنگ فولڈر میں ترمیم کرنا ہوگی۔ مزید برآں، کوڈنگ لینگویج C کا 'getcwd' طریقہ استعمال کیا جا سکتا ہے تاکہ یہ معلوم کیا جا سکے کہ موجودہ ورکنگ فولڈر کب تبدیل ہوا ہے۔ اب، ہم ایک ورکنگ ڈائرکٹری کو تبدیل کرنے کے لیے اس آرٹیکل میں C کا chdir() فنکشن استعمال کریں گے۔

مثال 01:

آئیے لینکس آپریٹنگ سسٹم میں C کے chdir() فنکشن کے کام کے ساتھ شروع کرتے ہیں۔ اس کے لیے، آپ کو یہ یقینی بنانا ہوگا کہ C کا کمپائلر آپ کے آخر میں پہلے سے نصب ہے۔ زیادہ تر معاملات میں، ہم اپنے کالی لینکس آپریٹنگ سسٹم میں C کا 'gcc' کمپائلر استعمال کرتے ہیں۔ اس مثال کے ساتھ شروع کرنے کے لیے، ہمارے پاس 'c' ایکسٹینشن والی C فائل ہونی چاہیے۔ ہم نے اسے p1.c کا نام دیا اور اسے لینکس کے 'نانو' ایڈیٹر کے ساتھ کھولنے کی کوشش کی جیسا کہ ذیل میں پیش کیا گیا ہے۔







جب آپ کی فائل ایڈیٹر میں کھل جاتی ہے، تو آپ کو اس میں کوڈنگ شروع کرنا ہوگی۔ ہم اپنے C پروگرام کا آغاز C کی مرکزی ہیڈر لائبریریوں کو شامل کرکے کر رہے ہیں جو کسی بھی C پروگرام میں ضروری ہیں۔ لہذا، stdio.h اور unistd.h ہیڈر لائبریریوں کا استعمال اس بات کو یقینی بنانے کے لیے کیا جاتا ہے کہ معیاری ان پٹ اور آؤٹ پٹ پروگرام کے اندر بہہ سکے۔ unistd.h ہیڈر C کے کچھ معیاری فنکشنز کو استعمال کرنے کے لیے استعمال کیا گیا ہے جو خاص طور پر اس مثال کے لیے درکار ہیں۔ اب، ہم نے اس کوڈ میں C کا مین() ڈرائیور فنکشن شروع کر دیا ہے تاکہ عمل درآمد پر خود بخود چل سکے۔ کریکٹر ٹائپ اری ویری ایبل 'پاتھ' کی وضاحت 100 کے سائز کے ساتھ کی گئی ہے کیونکہ یہ صرف 100 ویلیوز کو اسٹور کرتا ہے۔



printf() فنکشن اسٹیٹمنٹ کو 'getcwd()' فنکشن کا استعمال کرتے ہوئے اس C فائل کے موجودہ ورکنگ ڈائرکٹری فولڈر کو آسانی سے پرنٹ کرنے کے لیے استعمال کیا گیا ہے۔ یہ فنکشن 100 کے سائز کے ساتھ 'path' array variable کا استعمال کرتا ہے تاکہ اس میں موجودہ ورکنگ ڈائرکٹری حاصل کی جا سکے اور اسے ڈسپلے کے لیے printf() فنکشن اسٹیٹمنٹ میں منتقل کیا جا سکے۔ اب، chdir() فنکشن کو استعمال کرنے کا وقت آگیا ہے۔ ہم کسی بھی قسم کے حروف کو یہ بتانے کے لیے پاس کر سکتے ہیں کہ آیا ہم ڈائرکٹری میں آگے بڑھنا چاہتے ہیں یا اسی ڈائرکٹری کے اندر پیچھے کی سمت جانا چاہتے ہیں۔



لہذا، ہم نے chdir() فنکشن اسٹیٹمنٹ میں موجود '..' حروف کو موجودہ ورکنگ ڈائرکٹری سے پسماندہ سمت میں منتقل کرنے کی کوشش کی ہے یعنی موجودہ ورکنگ ڈائرکٹری سے ایک لیول نیچے۔ نوٹ کریں کہ ابھی، ہم کالی لینکس سسٹم کی اپنی مرکزی 'لینکس' ورکنگ ڈائرکٹری کے پروجیکٹ فولڈر میں کام کر رہے ہیں۔ اب، ہم 'chdir' فنکشن استعمال کرنے کے بعد 'project' ڈائرکٹری کے بجائے 'Linux' ڈائریکٹری میں ہیں۔ اب، ہم نے 'printf()' فنکشن اسٹیٹمنٹ کو ایک بار پھر آزمایا تاکہ موجودہ ورکنگ ڈائرکٹری کو اس میں موجود 'getcwd' فنکشن کا استعمال کرتے ہوئے ظاہر کیا جا سکے۔ ہمارا پروگرام واپسی 0 بیان کے ساتھ ختم ہوتا ہے۔





اس C پروگرام کو محفوظ کرنے کے بعد، ہمیں اسے 'gcc' کمپائلر کا استعمال کرتے ہوئے مرتب کرنا ہوگا جسے ہم پہلے ہی اپنے آخر میں ترتیب دے چکے ہیں۔ اس gcc انسٹرکشن کا استعمال کرتے ہوئے، ہم نے ذیل میں دکھائے گئے –o آپشن کا استعمال کرتے ہوئے اس C فائل کی ایک آبجیکٹ فائل بنائی ہے جس کا نام 'p1.out' ہے۔



اب، جب آپ اس کی آبجیکٹ فائل کو اپنے لینکس ٹرمینل میں چلاتے ہیں، تو آپ کو پہلے chdir() فنکشن کے استعمال سے پہلے پروگرام کے ذریعے استعمال ہونے والی ورکنگ ڈائرکٹری ملے گی۔ chdir() فنکشن کے استعمال کے بعد، ہم نیچے کی ایک ڈائرکٹری میں چلے گئے اور وہ مخصوص ڈائرکٹری 'home' ظاہر ہوتی ہے۔

مثال 02:



اسی ہیڈر لائبریریوں کا استعمال کرتے ہوئے، ہم نے اس پروگرام کوڈ کو شروع کیا ہے۔ اس پروگرام کے مین () فنکشن کے اندر، ہم اس میں موجود chdir() فنکشن کو استعمال کرتے ہوئے 'if' اسٹیٹمنٹ استعمال کر رہے ہیں۔

یہ فنکشن چیک کرے گا کہ آیا سسٹم میں '/user' موجود ہے یا نہیں '/user!=0' کی شرط لگا کر۔ اگر موجودہ سسٹم میں ڈائرکٹری موجود نہیں ہے، تو متعلقہ ایرر میسج کو ظاہر کرنے کے لیے پرر فنکشن کال کا استعمال کیا جائے گا یعنی 'صارف ڈائریکٹری موجود نہیں ہے۔ ہم اس کے اندر chdir() فنکشن کا استعمال کرتے ہوئے ایک اور 'if' اسٹیٹمنٹ استعمال کر رہے ہیں۔ یہاں chdir() فنکشن کو استعمال کرنے کا مقصد بھی وہی ہے جیسا کہ ہم نے اوپر if سٹیٹمنٹ میں کیا تھا، جو یہ جانچنے کے لیے ہے کہ آیا ڈائرکٹری موجود ہے یا نہیں '/temp'!=0 حالت کا استعمال۔ فرق صرف یہ ہے کہ '/user' کے بجائے ایک نئے ڈائریکٹری نام '/temp' کا استعمال ہے جیسا کہ آپ نیچے کوڈ کی تصویر سے دیکھ سکتے ہیں۔







اگر /temp ڈائریکٹری سسٹم میں موجود نہیں ہے تو، 'if' اسٹیٹمنٹ میں استعمال ہونے والا pererror فنکشن ایک ایرر میسج '/temp ڈائریکٹری موجود نہیں ہے' پھینکے گا جیسا کہ نیچے دی گئی تصویر سے دکھایا گیا ہے۔ دونوں 'اگر' بیانات کے استعمال کے بعد، ہم اس کوڈ کو C کے واپسی 0 بیان کے ساتھ ختم کر رہے ہیں۔ اب، پروگرام ختم ہو گیا ہے. ہم اپنے C کوڈ کو Ctrl+S شارٹ کٹ استعمال کرنے سے پہلے محفوظ کر رہے ہیں۔





اب جبکہ فائل آپ کے سسٹم میں محفوظ ہو چکی ہے، ہمیں C کوڈ کو 'gcc' کمپائلر کے ساتھ مرتب کرنا ہے جو ہم نے پہلے ہی اپنے آخر میں نصب کر رکھا ہے۔ اس ہدایات کو استعمال کرتے ہوئے، ہم انسٹرکشن میں موجود –o آپشن کا استعمال کرتے ہوئے اس کی آبجیکٹ فائل 'p2.out' بنا رہے ہیں۔





تخلیق شدہ آبجیکٹ فائل 'p2.out' کو './' حروف کے ساتھ عمل میں لانے کے بعد، ہم نے سیکھا کہ 'chdir' کے راستے میں مذکور دونوں ڈائریکٹریز سسٹم میں موجود نہیں ہیں یا شیل میں ظاہر ہونے والی خرابی ظاہر کر رہی ہے۔ یہ ٹھیک سے.



نتیجہ

آج کے اس مضمون کے اندر، ہم نے کالی لینکس آپریٹنگ سسٹم میں C کے chdir() فنکشن کے استعمال کا مظاہرہ کیا ہے۔ پہلی مثال یہ بتاتی ہے کہ کس طرح chdir() فنکشن کو ورکنگ ڈائرکٹری کو تبدیل کرنے کے لیے استعمال کیا جا سکتا ہے، یعنی ایک ڈائرکٹری سے دوسری ڈائرکٹری میں منتقل ہونا۔ C کی آخری مثال یہ ظاہر کرتی ہے کہ ہم کیسے چیک کر سکتے ہیں کہ chdir() کے راستے میں بتائی گئی موجودہ ورکنگ ڈائرکٹری موجود ہے یا نہیں۔