مثال کے ساتھ C میں getpid فنکشن کو کال کرنا۔

Calling Getpid Function C With Examples



Getpid () وہ فنکشن ہے جو اس عمل کی پروسیس ID حاصل کرنے کے لیے استعمال ہوتا ہے جو اس فنکشن کو کال کرتا ہے۔ ابتدائی عمل کے لیے پی آئی ڈی 1 ہے ، اور پھر ہر نئے عمل کو ایک نئی آئی ڈی تفویض کی جاتی ہے۔ پی آئی ڈی حاصل کرنے کا یہ ایک آسان طریقہ ہے۔ یہ فنکشن صرف آپ کو منفرد عمل کی آئی ڈی حاصل کرنے میں مدد کرتا ہے۔

آئی ڈی حاصل کرنے میں استعمال ہونے والے افعال۔

دو قسم کی آئی ڈی یہاں موجود ہیں۔ ایک عمل PID کی موجودہ آئی ڈی ہے۔ جبکہ دوسرا پیرنٹ پروسیس پی پی آئی ڈی کی آئی ڈی ہے۔ یہ دونوں افعال بلٹ ان افعال ہیں جو لائبریری میں بیان کیے گئے ہیں۔ اس لائبریری کو استعمال کیے بغیر کوڈ چلاتے وقت غلطی ہو سکتی ہے اور عملدرآمد رک جاتا ہے۔







getpid () C میں فنکشن۔

جب کچھ عمل بنتا ہے اور چلتا ہے تو ، اس کے لیے ایک منفرد آئی ڈی تفویض کی جاتی ہے۔ یہ عمل کی شناخت ہے۔ یہ فنکشن اس عمل کی آئی ڈی واپس کرنے میں مدد کرتا ہے جسے فی الحال کہا جاتا ہے۔



getppid () C میں فنکشن۔

یہ آئی ڈی والدین کے عمل/فنکشن کو واپس کرنے میں کارآمد ہے۔



مثال 1۔
C زبان میں عمل میں PID کی مثال کو سمجھنے کے لیے۔ آپ کو دو ٹولز کی ضرورت ہے: کوئی بھی ٹیکسٹ ایڈیٹر اور لینکس ٹرمینل ، جس پر آپ کو کمانڈ چلانے کی ضرورت ہے۔ کسی بھی ٹیکسٹ ایڈیٹر میں فائل بنائیں۔ ہم نے ایک فائل کا نام بنایا ہے code1.c جیسا کہ کوڈ C زبان میں لکھا گیا ہے ، لہذا اسے .c توسیع کے ساتھ محفوظ کیا جانا چاہئے۔





ہم نے ایک سنگل لائبریری کا اضافہ کیا ہے۔ پھر یہاں سے مرکزی پروگرام شروع ہوتا ہے۔ مرکزی پروگرام میں ، ہم بلٹ ان فنکشن کو getpid () کہتے ہیں۔ موجودہ عمل کی آئی ڈی لانے کے لیے۔ اور ایک متغیر متعارف کرایا گیا ہے اور تفویض کیا گیا ہے۔ تاکہ PID () فنکشن کی ویلیو اس متغیر میں محفوظ ہوجائے ، پھر ہم اس متغیر کو استعمال کرتے ہوئے ویلیو کا پرنٹ لیں گے۔



اب ہم لینکس ٹرمینل میں اس فائل کے مندرجات کو چلانا چاہتے ہیں۔ کوڈ کی شرط پہلے مرتب کی جائے اور پھر اس پر عملدرآمد کیا جائے۔ تالیف کے لیے ، جی سی سی استعمال کیا جاتا ہے۔ اگر آپ کے سسٹم میں جی سی سی کی کمی ہے ، تو آپ کو پہلے سوڈو کمانڈ استعمال کرکے اسے انسٹال کرنے کی ضرورت ہے۔

اب لکھا ہوا کوڈ مرتب کریں۔ یہ مندرجہ ذیل ضمنی کمانڈ کا استعمال کرکے پورا کیا جا سکتا ہے۔

$ GCC –o code1 code1.c

جبکہ –o کمانڈ میں محفوظ فائل کھولنے کے لیے استعمال ہوتا ہے۔ پھر –o کے بعد ، ہم فائل کا نام لکھتے ہیں۔

تالیف کے بعد ، کمانڈ چلائیں۔

$ ./code1

مندرجہ بالا تصویر فنکشن کا عمل ID دکھاتی ہے۔

مثال 2۔
پچھلی مثال میں ، ہم پی آئی ڈی کا استعمال کرتے ہیں۔ لیکن اس مثال میں ، پی آئی ڈی اور پی پی آئی ڈی دونوں استعمال ہوتے ہیں۔ اس فنکشن کا سورس کوڈ تقریبا almost پچھلے ایک جیسا ہے۔ صرف ایک آئی ڈی کا ایک اور اضافہ ہے۔

ایک ایسی فائل پر غور کریں جس میں مرکزی پروگرام میں دو متغیرات ہوں جو پروسیس IDs کے ذریعے تفویض کیے گئے ہوں۔ ایک موجودہ عمل کا ہے ، اور دوسرا والدین کے عمل کا ہے۔ پھر پہلی مثال کی طرح ، دونوں آئی ڈی کو ان کے متغیر کے ذریعے پرنٹ کریں۔

انٹ pid_t = getpid ()
انٹ ppid_t = getppid ()؛

یہ دونوں پورے کوڈ کے اہم کام ہیں۔ اب ، فائل بنانے کے بعد ، اگلا مرحلہ فائل کو مرتب اور چلانے کا ہے۔ کمانڈ میں جی سی سی کا استعمال کرتے ہوئے مرتب کریں۔ تالیف کے بعد ، پھر اسے اوبنٹو کے ٹرمینل پر چلائیں۔

$ GCC –o code1 code1.c
$ ./code1

آؤٹ پٹ ظاہر کرتا ہے کہ پروسیس آئی ڈی پہلے ظاہر ہوتی ہے ، اور پھر پیرنٹ پروسیس آئی ڈی ڈسپلے ہوتی ہے۔

مثال 3۔
تمام عمل متوازی انداز میں چلتے اور چلاتے ہیں۔ والدین اور بچے کا عمل باقی تمام لائنوں کو اجتماعی طور پر انجام دیتا ہے۔ دونوں ایک وقت میں نتائج دیتے ہیں۔ لیکن سی کوڈ میں کانٹے کا استعمال کرتے ہوئے ، اگر یہ فنکشن 0 سے کم ویلیو لوٹاتا ہے تو اس کا مطلب ہے کہ فنکشن کال ختم ہو گئی ہے۔

متعلقہ ہیڈر میں دو لائبریریوں والی ایک نئی فائل پر غور کریں۔ یہاں ایک شرط استعمال کی گئی ہے جس میں ہم نے if-else بیان کو استعمال کیا ہے۔ مرکزی پروگرام میں ، یہ کہا گیا ہے کہ اگر فورک ویلیو valueive ویلیو میں ہے ، تو یہ ایک پیغام ظاہر کرے گا کہ پروسیس کی آئی ڈی ناکام ہے اور اسے حاصل نہیں کیا جائے گا۔ اگر صورتحال غلط ہے ، تو مرتب کنڈیشن کے دوسرے حصے میں منتقل ہو جائے گا۔ اس حصے میں ، عمل کی شناخت حاصل کی جاتی ہے ، پھر ہم اس عمل کی شناخت ظاہر کریں گے اور ایک پیغام ظاہر کریں گے کہ عمل کی شناخت حاصل کی گئی ہے۔ یہاں ہم سورس کوڈ کے if-else بیان کا حوالہ دیں گے۔

اب دوبارہ ، کوڈ مرتب کریں اور پھر اسے چلائیں۔

./ کوڈ 2۔

آؤٹ پٹ سے پتہ چلتا ہے کہ دوسرے حصے کو پھانسی دے دی گئی ہے اور وہ پروسیس آئی ڈی پرنٹ کرے گا اور پھر پی آئی ڈی پیغام دکھائے گا۔

مثال 4۔

یہ اسی تصور کی وضاحت کرنے کی ایک اور مثال ہے۔ فورک () فنکشن دو مختلف اقدار لوٹاتا ہے۔ بچے کے عمل کی صورت میں ، قیمت 0 ہے ، جسے واپس کرنا ہے۔ ایک ہی وقت میں ، والدین کے عمل کی قیمت نئے بچے کی پروسیس ID ہے۔

اس مثال میں ، وہی if_else حالت استعمال کی جاتی ہے۔ لیکن یہاں دو شرائط لاگو ہوتی ہیں۔ پی آئی ڈی کا موازنہ جو صفر سے کم ہے اور دوسرا صفر کے برابر ہے۔ اگر پی آئی ڈی صفر سے کم ہے تو یہ ایک غلطی کا پیغام دکھائے گا۔ جبکہ اگر پی آئی ڈی صفر کے برابر ہے تو اس کا مطلب ہے کہ یہ ایک چائلڈ پروسیس ہے ، اور دوسرا حصہ ظاہر کرتا ہے کہ اگر پی آئی ڈی صفر سے زیادہ ہے تو یہ ایک والدین کا عمل ہے۔

اب کوڈ مرتب کریں اور چلائیں۔

$ gcc codeo code3 code3.c
$./کوڈ 3۔

آؤٹ پٹ سے ، ہم دیکھ سکتے ہیں کہ دوسرا حصہ پہلے پرنٹ کیا گیا ہے اس کا مطلب ہے کہ پروسیس ID 0 سے زیادہ ہے۔

مثال 5۔
ٹھیک ہے ، یہ آخری مثال ہے جس میں ہم نے اس فنکشن کے کام کی وضاحت کے لیے اوپر بیان کردہ تمام کوڈز کو جمع کرنے کی کوشش کی ہے۔ ہم getpid () افعال کو استعمال کرنے کے لیے فورک () افعال کے ساتھ لوپس بھی استعمال کر سکتے ہیں۔ ہم بچوں کے کئی عمل بنانے کے لیے لوپس کا استعمال کر سکتے ہیں۔ یہاں ہمیں لوپ میں 3 کی قیمت استعمال کرنی ہے۔

ایک بار پھر ہمیں کوڈ میں مشروط بیان استعمال کرنا ہوگا۔ فار لوپ ایک سے شروع ہوتا ہے اور 3 تک تکرار کرتا ہے۔rdباری

اب فائل کو محفوظ کریں اور اس پر عمل کریں۔ کوڈ کو ایک ہی کمانڈ میں مرتب کرنے اور اس پر عمل کرنے کا ایک اور آسان طریقہ ہے۔ یہ ہے کہ.

$ GCC codes5.c so s & ./code5

اب کوڈ کے آؤٹ پٹ کی طرف بڑھ رہے ہیں۔ والدین کے عمل کی شناخت بچوں کے تمام عملوں میں ایک جیسی ہوتی ہے۔ اس کا مطلب ہے کہ یہ تمام عمل ایک والدین کے ہیں۔ یہ عمل ایک کے بعد دوسرے کو انجام دیا جاتا ہے کیونکہ لوپ 3 تک محدود ہے۔ صرف 3 تکرار کی جائے گی۔

نتیجہ

اس مضمون میں بنیادی معلومات ، اور لینکس کمانڈز میں getPID () فنکشن کا کام شامل ہے۔ اس فنکشن کے ذریعے ہر عمل کو منفرد آئی ڈی تفویض کی جاتی ہے۔