பெர்ல் ஃபோர்க் செயல்பாடு

Perl Hpork Ceyalpatu



ஃபோர்க்() என்பது பெர்லின் உள்ளமைக்கப்பட்ட செயல்பாடாகும், இது எந்த இயங்கும் செயல்முறையின் குழந்தை செயல்முறையை உருவாக்க பயன்படுகிறது மற்றும் இது லினக்ஸ் இயக்க முறைமைகளில் மட்டுமே வேலை செய்கிறது. இது செயல்படுத்தும் செயல்முறையின் தனி நகலை உருவாக்குகிறது மற்றும் இரண்டு செயல்முறைகளையும் இணையாக இயக்குகிறது. எனவே, பெற்றோர் செயல்முறையின் மாறி புதுப்பிக்கப்பட்டால், அது குழந்தை செயல்முறையின் அதே மாறியில் அல்லது அதற்கு நேர்மாறாக எந்த விளைவையும் ஏற்படுத்தாது. பெர்லில் ஃபோர்க்() செயல்பாட்டின் பயன்பாடுகள் இந்த டுடோரியலில் காட்டப்பட்டுள்ளன.

தொடரியல்:

ஃபோர்க்() செயல்பாட்டின் தொடரியல் பின்வருவனவற்றில் கொடுக்கப்பட்டுள்ளது. இது ஒரு எண் மதிப்பு அல்லது 'undef' ஐ வழங்குகிறது. ஃபோர்க்() செயல்பாடு வெற்றிகரமாக செயல்பட்டால், ஒரு குறிப்பிட்ட செயல்முறை ஐடி திரும்பும் அல்லது குழந்தை செயல்முறைக்கு 0 திரும்பும். ஃபோர்க்() செயல்பாடு தோல்வியுற்றால், அது 'undef' ஐ வழங்குகிறது.







ஐடி அல்லது undef போர்க் ( ) ;

எடுத்துக்காட்டு 1: ஃபோர்க்() செயல்பாட்டின் எளிமையான பயன்பாடு

ஃபோர்க்() செயல்பாட்டைப் பயன்படுத்தி தற்போதைய செயல்முறையிலிருந்து குழந்தை செயல்முறையை உருவாக்கும் பின்வரும் ஸ்கிரிப்ட் மூலம் ஒரு பெர்ல் கோப்பை உருவாக்கவும். ஃபோர்க்() செயல்பாட்டைச் செயல்படுத்திய பிறகு செயல்முறை ஐடி அச்சிடப்படுகிறது. பெற்றோர் மற்றும் குழந்தை செயல்முறைகளின் மாறிகள் வெவ்வேறு நினைவக இடங்களில் சேமிக்கப்படுகின்றன. எனவே, பெற்றோர் செயல்பாட்டில் மாறியின் மதிப்பு மாற்றப்பட்டால், அது குழந்தை செயல்முறையின் அதே மாறிக்கு அல்லது அதற்கு நேர்மாறாக எந்த மாற்றத்தையும் செய்யாது. இந்த ஸ்கிரிப்ட்டில், பெற்றோர் செயல்முறையின் மாறி மாற்றப்பட்டது. பின்னர், பெற்றோர் மற்றும் குழந்தை செயல்முறைகளின் மாறிகள் அச்சிடப்படுகின்றன.



#!/usr/bin/perl

கண்டிப்பாக பயன்படுத்தவும் ;
பயன்படுத்த எச்சரிக்கைகள் ;
5.34.0 ஐப் பயன்படுத்தவும் ;

#ஒரு மாறியை அறிவிக்கவும்
என் $var = 'சோதனை முட்கரண்டி' ;
#தற்போதைய செயல்முறையை ஃபோர்க் செய்யவும்
எனது $process_id = முள் கரண்டி ( ) ;

#செயல்முறை ஐடியைச் சரிபார்க்கவும்
என்றால் ( $process_id < 0 )
{
சொல் 'செயல்முறையை முடக்க முடியவில்லை.' ;
}
எல்சிஃப் ( $process_id == 0 )
{
சொல் 'குழந்தை செயல்முறை:' ;
#குழந்தை செயல்முறையின் மாறியின் மதிப்பை அச்சிடவும்
சொல் 'மாறியின் மதிப்பு: $var' ;
}
வேறு
{
சொல் 'பெற்றோர் செயல்முறை: $process_id' ;
#மாறியின் மதிப்பைப் புதுப்பிக்கவும்
$var = 'டெஸ்ட் ஃபோர்க் 2' ;
#பெற்றோர் செயல்முறையின் மாறியின் மதிப்பை அச்சிடவும்
சொல் 'மாறியின் மதிப்பு: $var' ;
}

வெளியீடு:



ஸ்கிரிப்டை இயக்கிய பின் பின்வரும் வெளியீடு தோன்றும். பெற்றோர் செயல்முறையின் மாறியானது 'டெஸ்ட் ஃபோர்க் 2' மதிப்புடன் மாற்றியமைக்கப்பட்டுள்ளது, ஆனால் குழந்தை செயல்முறையின் மாறி மாறாமல் உள்ளது. எனவே, குழந்தை செயல்முறையின் மாறியின் மதிப்பு 'டெஸ்ட் ஃபோர்க்' ஆகும். முட்கரண்டிக்குப் பிறகு அதுதான் மதிப்பு:





  ப1

எடுத்துக்காட்டு 2: ஃபோர்க்() மற்றும் காத்திரு() செயல்பாடுகளைப் பயன்படுத்துதல்

காத்திரு() செயல்பாட்டுடன் ஃபோர்க்() செயல்பாட்டின் பயன்பாட்டைக் காட்டும் பின்வரும் ஸ்கிரிப்ட் மூலம் பெர்ல் கோப்பை உருவாக்கவும். ஸ்கிரிப்ட்டின் தொடக்கத்தில் மூன்று மாறிகள் அறிவிக்கப்படுகின்றன. ஸ்லீப்() செயல்பாடு பெற்றோர் செயல்முறையின் தொகுதிக்குள் 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 இன் பெருக்கல் $ முடிவு.' ;
}
எல்சிஃப் ( $process_id > 0 )
{
#எண்களின் கூட்டுத்தொகையைக் கணக்கிடுங்கள்
சொல் 'பெற்றோர் செயல்முறை: $$' ;
$ முடிவு = $n1 + $n2 ;
சொல் 'ஒரு வினாடி காத்திரு... \n ' ;
தூங்கு 1 ;
சொல் '$n1 மற்றும் $n2 ஆகியவற்றின் கூட்டுத்தொகை $ முடிவு.' ;
}
வேறு
{
சொல் 'செயல்முறையை முடக்க முடியவில்லை.' ;
}

#செயல்முறை பணியை முடிக்க காத்திருங்கள்
காத்திரு ( ) ;

வெளியீடு:

ஸ்கிரிப்டை இயக்கிய பின் பின்வரும் வெளியீடு தோன்றும். வெளியீட்டின் படி, குழந்தை செயல்முறை வெற்றிகரமாக உருவாக்கப்பட்டது, பெற்றோர் செயல்முறையின் செயல்முறை ஐடி அச்சிடப்பட்டது, மேலும் பணியை முடிக்க ஸ்கிரிப்ட் 1 வினாடிக்கு இடைநிறுத்தப்பட்டது. அடுத்து, குழந்தை செயல்முறையின் செயல்முறை ஐடி அச்சிடப்பட்டு, பணியை முடிக்க ஸ்கிரிப்ட் 2 வினாடிகள் இடைநிறுத்தப்படும். பெற்றோர் மற்றும் குழந்தை செயல்முறைகளின் வெளியீடு பின்னர் அச்சிடப்படுகிறது:

  ப2

முடிவுரை

Perl fork() செயல்பாட்டைப் பயன்படுத்துவதன் நோக்கம் இந்த டுடோரியலில் குழந்தை செயல்முறையை உருவாக்கி, பெற்றோர் மற்றும் குழந்தை செயல்முறைகளின் தொகுதிக்குள் பல்வேறு வகையான பணிகளைச் செய்வதன் மூலம் காட்டப்பட்டுள்ளது.