Syntaks:
Syntaksen for funktionen fork() er givet i det følgende. Det returnerer en numerisk værdi eller 'undef'. Hvis fork()-funktionen fungerer korrekt, returneres et bestemt proces-id, eller 0 returneres for den underordnede proces. Det returnerer 'undef', hvis funktionen fork() ikke lykkes.
id eller undef gaffel ( ) ;
Eksempel 1: Simpel brug af Fork()-funktionen
Opret en Perl-fil med følgende script, der opretter en underordnet proces fra den aktuelle proces ved hjælp af fork()-funktionen. Proces-id'et udskrives efter udførelse af fork()-funktionen. Variablerne for forælder- og underordnede processer gemmes på forskellige hukommelsesplaceringer. Så hvis værdien af variablen ændres i den overordnede proces, vil den ikke foretage nogen ændring for den samme variabel i den underordnede proces eller omvendt. I dette script ændres variablen for den overordnede proces. Derefter udskrives variablerne for både overordnede og underordnede processer.
#!/usr/bin/perl
brug strenge ;
brug advarsler ;
brug 5.34.0 ;
#Deklarer en variabel
min $var = 'Test gaffel' ;
#Fork den nuværende proces
mit $proces_id = gaffel ( ) ;
#Tjek proces-id'et
hvis ( $proces_id < 0 )
{
sige 'I stand til at forgrene processen.' ;
}
elsif ( $proces_id == 0 )
{
sige 'Børneproces:' ;
#Udskriv værdien af variablen i den underordnede proces
sige 'Værdien af variablen: $var' ;
}
andet
{
sige 'Overordnet proces: $process_id' ;
#Opdater værdien af variablen
$var = 'Test Fork 2' ;
#Udskriv værdien af variablen for den overordnede proces
sige 'Værdien af variablen: $var' ;
}
Produktion:
Følgende output vises efter eksekvering af scriptet. Variablen for den overordnede proces ændres med værdien 'Test Fork 2', men variablen for den underordnede proces forbliver uændret. Så værdien af variablen i den underordnede proces er 'Test Fork'. Det var værdien efter gaflen:
Eksempel 2: Brug af funktionerne Fork() og Wait().
Opret en Perl-fil med følgende script, der viser brugen af funktionen fork() med funktionen wait(). Tre variable er deklareret i begyndelsen af scriptet. Sleep()-funktionen bruges inde i blokken af den overordnede proces i 1 sekund og inde i den underordnede proces i 2 sekunder. Summen af de to variable beregnes og gemmes på en anden variabel inde i blokken af moderprocessen. Værdierne af de to variable ganges og gemmes på en anden variabel inde i den underordnede proces. wait()-funktionen bruges i slutningen af scriptet til at vente på at fuldføre opgaven i én proces, før opgaven i en anden proces startes. Hvis funktionen fork() bruges flere gange i scriptet, og mange processer kører på samme tid, kan der opstå en deadlock-situation. Problemet kan løses ved hjælp af wait()-funktionen.
#!/usr/bin/perl
brug strenge ;
brug advarsler ;
brug 5.34.0 ;
#Initialiser variablerne
min $n1 = 10 ;
min $n2 = 25 ;
mit $resultat = 0 ;
#Fork den nuværende proces
mit $proces_id = gaffel ( ) ;
#Tjek proces-id'et
hvis ( $proces_id == 0 )
{
#Beregn multiplikationen af tallene
sige 'Børneproces: $$' ;
$resultat = $n1 * $n2 ;
sige 'Vent i 2 sekunder... \n ' ;
søvn 2 ;
sige 'Multiplikationen af $n1 og $n2 er $resultat.' ;
}
elsif ( $proces_id > 0 )
{
#Beregn summen af tallene
sige 'Forældreproces: $$' ;
$resultat = $n1 + $n2 ;
sige 'Vent i 1 sekund... \n ' ;
søvn 1 ;
sige 'Summen af $n1 og $n2 er $resultat.' ;
}
andet
{
sige 'I stand til at forgrene processen.' ;
}
#Vent med at fuldføre procesopgaven
vente ( ) ;
Produktion:
Følgende output vises efter eksekvering af scriptet. I henhold til outputtet oprettes den underordnede proces med succes, proces-id'et for den overordnede proces udskrives, og scriptet sættes på pause i 1 sekund for at fuldføre opgaven. Derefter udskrives proces-id'et for den underordnede proces, og scriptet sættes på pause i 2 sekunder for at fuldføre opgaven. Outputtet af både overordnede og underordnede processer udskrives senere:
Konklusion
Formålet med at bruge Perl fork()-funktionen er vist i denne tutorial ved at oprette en underordnet proces og udføre forskellige typer opgaver inde i blokken af forælder- og underprocesserne.