پرل فورک فنکشن

Prl Fwrk Fnkshn



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

نحو:

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







آئی ڈی یا undef کانٹا ( ) ;

مثال 1: فورک () فنکشن کا آسان استعمال

مندرجہ ذیل اسکرپٹ کے ساتھ ایک پرل فائل بنائیں جو فورک () فنکشن کا استعمال کرتے ہوئے موجودہ عمل سے چائلڈ پروسیس بناتی ہے۔ عمل کی شناخت فورک () فنکشن کو انجام دینے کے بعد پرنٹ کی جاتی ہے۔ والدین اور بچے کے عمل کے متغیر میموری کے مختلف مقامات پر محفوظ کیے جاتے ہیں۔ لہذا، اگر والدین کے عمل میں متغیر کی قدر کو تبدیل کیا جاتا ہے، تو یہ بچے کے عمل کے اسی متغیر کے لیے کوئی تبدیلی نہیں کرے گا یا اس کے برعکس۔ اس اسکرپٹ میں، پیرنٹ پروسیس کے متغیر کو تبدیل کیا جاتا ہے۔ پھر، والدین اور بچے دونوں کے عمل کے متغیر پرنٹ کیے جاتے ہیں۔



#!/usr/bin/perl

سختی سے استعمال کریں ;
استعمال کریں انتباہات ;
5.34.0 استعمال کریں۔ ;

# متغیر کا اعلان کریں۔
میرا $var = 'ٹیسٹ فورک' ;
# موجودہ عمل کو فورک کریں۔
میرا $process_id = کانٹا ( ) ;

# عمل کی شناخت چیک کریں۔
اگر ( $process_id < 0 )
{
کہنا 'عمل کو آگے بڑھانے سے قاصر ہے۔' ;
}
elsif ( $process_id == 0 )
{
کہنا 'بچے کا عمل:' ;
# بچے کے عمل کے متغیر کی قدر کو پرنٹ کریں۔
کہنا 'متغیر کی قدر: $var' ;
}
اور
{
کہنا 'والدین عمل: $process_id' ;
# متغیر کی قدر کو اپ ڈیٹ کریں۔
$var = 'ٹیسٹ فورک 2' ;
# پیرنٹ پروسیس کے متغیر کی قدر کو پرنٹ کریں۔
کہنا 'متغیر کی قدر: $var' ;
}

آؤٹ پٹ:



اسکرپٹ پر عمل کرنے کے بعد درج ذیل آؤٹ پٹ ظاہر ہوتا ہے۔ پیرنٹ پروسیس کے متغیر کو 'ٹیسٹ فورک 2' ویلیو کے ساتھ تبدیل کیا گیا ہے لیکن چائلڈ پروسیس کا متغیر برقرار ہے۔ لہذا، بچے کے عمل کے متغیر کی قدر 'ٹیسٹ فورک' ہے۔ یہ کانٹے کے بعد کی قیمت تھی:





  p1

مثال 2: فورک () اور انتظار () فنکشنز کا استعمال

مندرجہ ذیل اسکرپٹ کے ساتھ ایک پرل فائل بنائیں جو انتظار () فنکشن کے ساتھ فورک () فنکشن کا استعمال دکھائے۔ اسکرپٹ کے آغاز میں تین متغیرات کا اعلان کیا گیا ہے۔ sleep() فنکشن پیرنٹ پروسیس کے بلاک کے اندر 1 سیکنڈ اور چائلڈ پروسیس کے اندر 2 سیکنڈ کے لیے استعمال ہوتا ہے۔ دو متغیرات کے مجموعے کا حساب لگایا جاتا ہے اور پیرنٹ پروسیس کے بلاک کے اندر ایک اور متغیر پر محفوظ کیا جاتا ہے۔ دو متغیر کی قدروں کو بچے کے عمل کے اندر ایک اور متغیر پر ضرب اور ذخیرہ کیا جاتا ہے۔ انتظار () فنکشن اسکرپٹ کے آخر میں استعمال کیا جاتا ہے تاکہ دوسرے عمل کا کام شروع کرنے سے پہلے ایک عمل کے کام کو مکمل کرنے کا انتظار کیا جا سکے۔ اگر اسکرپٹ میں فورک () فنکشن کو متعدد بار استعمال کیا جاتا ہے اور ایک ہی وقت میں بہت سے عمل چل رہے ہیں، تو تعطل کی صورتحال پیدا ہو سکتی ہے۔ انتظار () فنکشن کا استعمال کرکے مسئلہ حل کیا جاسکتا ہے۔



#!/usr/bin/perl

سختی سے استعمال کریں ;
استعمال کریں انتباہات ;
5.34.0 استعمال کریں۔ ;

# متغیرات کو شروع کریں۔
میرا $n1 = 10 ;
میرا $n2 = 25 ;
میرا $ نتیجہ = 0 ;

# موجودہ عمل کو فورک کریں۔
میرا $process_id = کانٹا ( ) ;

# عمل کی شناخت چیک کریں۔
اگر ( $process_id == 0 )
{
# اعداد کی ضرب کا حساب لگائیں۔
کہنا 'بچے کا عمل: $$' ;
$نتیجہ = $n1 * $n2 ;
کہنا '2 سیکنڈ انتظار کرو... \n ' ;
سونا 2 ;
کہنا '$n1 اور $n2 کی ضرب $نتیجہ ہے۔' ;
}
elsif ( $process_id > 0 )
{
# نمبروں کے مجموعے کا حساب لگائیں۔
کہنا 'والدین عمل: $$' ;
$نتیجہ = $n1 + $n2 ;
کہنا 'ایک سیکنڈ انتظار کرو... \n ' ;
سونا 1 ;
کہنا '$n1 اور $n2 کا مجموعہ $نتیجہ ہے۔' ;
}
اور
{
کہنا 'عمل کو آگے بڑھانے سے قاصر ہے۔' ;
}

# عمل کے کام کو مکمل کرنے کا انتظار کریں۔
انتظار کرو ( ) ;

آؤٹ پٹ:

اسکرپٹ پر عمل کرنے کے بعد درج ذیل آؤٹ پٹ ظاہر ہوتا ہے۔ آؤٹ پٹ کے مطابق، چائلڈ پروسیس کامیابی کے ساتھ بنتا ہے، پیرنٹ پروسیس کی پروسیس آئی ڈی پرنٹ ہوتی ہے، اور اسکرپٹ کو ٹاسک مکمل کرنے کے لیے 1 سیکنڈ کے لیے روک دیا جاتا ہے۔ اس کے بعد، چائلڈ پروسیس کی پراسیس آئی ڈی پرنٹ کی جاتی ہے اور اسکرپٹ کو کام کو مکمل کرنے کے لیے 2 سیکنڈ کے لیے روک دیا جاتا ہے۔ والدین اور بچے دونوں کے عمل کا آؤٹ پٹ بعد میں پرنٹ کیا جاتا ہے:

  p2

نتیجہ

پرل فورک () فنکشن کو استعمال کرنے کا مقصد اس ٹیوٹوریل میں چائلڈ پروسیس بنا کر اور والدین کے بلاک کے اندر مختلف قسم کے کاموں کو انجام دے کر اور چائلڈ پروسیس کو دکھایا گیا ہے۔