Perl Fork funkcija

Perl Fork Funkcija



Fork () ir Perl iebūvēta funkcija, kas tiek izmantota, lai izveidotu jebkura darbības procesa atvasināto procesu, un tā darbojas tikai Linux operētājsistēmās. Tas izveido atsevišķu izpildes procesa kopiju un palaiž abus procesus paralēli. Tātad, ja vecākprocesa mainīgais tiek atjaunināts, tam nebūs nekādas ietekmes uz to pašu pakārtotā procesa mainīgo vai otrādi. Funkcijas Fork() izmantošana Perl ir parādīta šajā apmācībā.

Sintakse:

Funkcijas fork () sintakse ir norādīta tālāk. Tas atgriež skaitlisku vērtību vai “undef”. Ja funkcija fork() darbojas veiksmīgi, tiek atgriezts konkrēts procesa ID vai atgriež 0 pakārtotajam procesam. Tas atgriež “undef”, ja funkcija fork () ir neveiksmīga.







id vai undef dakša ( ) ;

1. piemērs. Funkcijas Fork() vienkārša lietošana

Izveidojiet Perl failu ar šādu skriptu, kas izveido atvasināto procesu no pašreizējā procesa, izmantojot funkciju fork (). Procesa ID tiek izdrukāts pēc funkcijas fork () izpildes. Vecāku un bērnu procesu mainīgie tiek glabāti dažādās atmiņas vietās. Tātad, ja mainīgā vērtība tiek mainīta vecākprocesā, tas nemainīsies vienam un tam pašam pakārtotā procesa mainīgajam un otrādi. Šajā skriptā tiek mainīts vecāku procesa mainīgais. Pēc tam tiek izdrukāti gan vecāku, gan bērnu procesu mainīgie.



#!/usr/bin/perl

izmantojiet stingru ;
izmantot brīdinājumus ;
izmantot 5.34.0 ;

#Deklarēt mainīgo
mans $var = 'Pārbaudes dakša' ;
#Dakša pašreizējam procesam
mans $process_id = dakša ( ) ;

#Pārbaudiet procesa ID
ja ( $process_id < 0 )
{
saki 'Nevar sadalīt procesu.' ;
}
elsif ( $process_id == 0 )
{
saki 'Bērna process:' ;
#Izdrukājiet pakārtotā procesa mainīgā vērtību
saki 'Mainīgā vērtība: $var' ;
}
cits
{
saki 'Vecāku process: $process_id' ;
#Atjauniniet mainīgā vērtību
$var = 'Pārbaudes dakša 2' ;
#Izdrukājiet vecākprocesa mainīgā vērtību
saki 'Mainīgā vērtība: $var' ;
}

Izvade:



Pēc skripta izpildes tiek parādīta šāda izvade. Vecāku procesa mainīgais tiek modificēts ar vērtību “Test Fork 2”, bet bērna procesa mainīgais paliek nemainīgs. Tātad bērna procesa mainīgā vērtība ir “Test Fork”. Tā bija vērtība pēc dakšas:





  p1

2. piemērs: funkciju Fork() un Wait() izmantošana

Izveidojiet Perl failu ar šādu skriptu, kas parāda, kā tiek izmantota funkcija fork () ar funkciju wait (). Skripta sākumā ir deklarēti trīs mainīgie. Funkcija 'Sleep()' tiek izmantota vecākprocesa blokā 1 sekundi un bērnprocesa iekšpusē 2 sekundes. Abu mainīgo lielumu summa tiek aprēķināta un saglabāta citā mainīgajā pamatprocesa blokā. Abu mainīgo vērtības tiek reizinātas un saglabātas citā mainīgajā bērna procesā. Funkcija gaid () tiek izmantota skripta beigās, lai gaidītu viena procesa uzdevuma pabeigšanu, pirms tiek sākts cita procesa uzdevums. Ja funkcija fork() skriptā tiek izmantota vairākas reizes un vienlaikus darbojas daudzi procesi, var rasties strupceļa situācija. Problēmu var atrisināt, izmantojot gaidīšanas () funkciju.



#!/usr/bin/perl

izmantojiet stingru ;
izmantot brīdinājumus ;
izmantot 5.34.0 ;

#Inicializējiet mainīgos
mans $n1 = 10 ;
mans $n2 = 25 ;
mans $ rezultāts = 0 ;

#Dakša pašreizējam procesam
mans $process_id = dakša ( ) ;

#Pārbaudiet procesa ID
ja ( $process_id == 0 )
{
#Aprēķiniet skaitļu reizinājumu
saki 'Bērnu process: $$' ;
$rezultāts = $n1 * $n2 ;
saki 'Pagaidiet 2 sekundes... \n ' ;
Gulēt 2 ;
saki '$n1 un $n2 reizinājums ir $rezultāts.' ;
}
elsif ( $process_id > 0 )
{
#Aprēķiniet skaitļu summu
saki 'Vecāku process: $$' ;
$rezultāts = $n1 + $n2 ;
saki 'Pagaidi 1 sekundi... \n ' ;
Gulēt 1 ;
saki '$n1 un $n2 summa ir $rezultāts.' ;
}
cits
{
saki 'Nevar sadalīt procesu.' ;
}

#Pagaidiet, līdz tiks pabeigts procesa uzdevums
pagaidi ( ) ;

Izvade:

Pēc skripta izpildes tiek parādīta šāda izvade. Saskaņā ar izvadi pakārtotais process ir izveidots veiksmīgi, tiek izdrukāts vecākprocesa procesa ID un skripts tiek apturēts uz 1 sekundi, lai pabeigtu uzdevumu. Pēc tam tiek izdrukāts pakārtotā procesa procesa ID un skripts tiek apturēts uz 2 sekundēm, lai pabeigtu uzdevumu. Gan vecāku, gan bērnu procesu izvade tiek izdrukāta vēlāk:

  p2

Secinājums

Funkcijas Perl fork() izmantošanas mērķis ir parādīts šajā apmācībā, izveidojot pakārtotu procesu un veicot dažāda veida uzdevumus vecākprocesu un pakārtoto procesu blokā.