Fungsi Garpu Perl

Fungsi Garpu Perl



Fork() adalah fungsi bawaan Perl yang digunakan untuk membuat proses anak dari setiap proses yang berjalan dan hanya berfungsi pada sistem operasi Linux. Ini membuat salinan terpisah dari proses eksekusi dan menjalankan kedua proses secara paralel. Jadi, jika variabel proses induk diupdate maka tidak akan berpengaruh pada variabel proses anak yang sama atau sebaliknya. Penggunaan fungsi fork() di Perl ditunjukkan dalam tutorial ini.

Sintaksis:

Sintaks fungsi fork() diberikan sebagai berikut. Ini mengembalikan nilai numerik atau 'undef'. Jika fungsi fork() berhasil, ID proses tertentu dikembalikan atau 0 dikembalikan untuk proses anak. Ia mengembalikan “undef” jika fungsi fork() tidak berhasil.







pengenal atau garpu tidak pasti ( ) ;

Contoh 1: Penggunaan Sederhana Fungsi Fork()

Buat file Perl dengan skrip berikut yang membuat proses anak dari proses saat ini menggunakan fungsi fork(). ID proses dicetak setelah menjalankan fungsi fork(). Variabel proses induk dan anak disimpan di lokasi memori yang berbeda. Jadi, jika nilai variabel diubah pada proses induk, maka tidak akan terjadi perubahan apa pun pada variabel yang sama pada proses anak atau sebaliknya. Dalam skrip ini, variabel proses induk diubah. Kemudian, variabel proses induk dan anak dicetak.



#!/usr/bin/Perl

gunakan ketat ;
menggunakan peringatan ;
gunakan 5.34.0 ;

#Deklarasikan suatu variabel
$var saya = 'Garpu Uji' ;
#Fork proses saat ini
$proses_id saya = garpu ( ) ;

#Periksa id proses
jika ( $proses_id < 0 )
{
mengatakan 'Tidak dapat melakukan proses fork.' ;
}
elsif ( $proses_id == 0 )
{
mengatakan 'Proses Anak:' ;
#Cetak nilai variabel proses anak
mengatakan 'Nilai variabel: $var' ;
}
kalau tidak
{
mengatakan 'Proses Induk: $process_id' ;
#Perbarui nilai variabel
$var = 'Garpu Uji 2' ;
#Cetak nilai variabel proses induk
mengatakan 'Nilai variabel: $var' ;
}

Keluaran:



Output berikut muncul setelah menjalankan skrip. Variabel proses induk dimodifikasi dengan nilai “Test Fork 2” tetapi variabel proses anak tetap tidak berubah. Jadi, nilai variabel proses anak adalah “Test Fork”. Itu adalah nilai setelah percabangan:





  hal1

Contoh 2: Menggunakan Fungsi Fork() dan Wait()

Buat file Perl dengan skrip berikut yang menunjukkan penggunaan fungsi fork() dengan fungsi wait(). Tiga variabel dideklarasikan di awal skrip. Fungsi sleep() digunakan di dalam blok proses induk selama 1 detik dan di dalam proses anak selama 2 detik. Jumlah kedua variabel dihitung dan disimpan pada variabel lain di dalam blok proses induk. Nilai kedua variabel dikalikan dan disimpan pada variabel lain di dalam proses anak. Fungsi wait() digunakan di akhir skrip untuk menunggu penyelesaian tugas suatu proses sebelum memulai tugas proses lainnya. Jika fungsi fork() digunakan beberapa kali dalam skrip dan banyak proses berjalan pada saat yang sama, situasi kebuntuan mungkin timbul. Masalahnya dapat diselesaikan dengan menggunakan fungsi wait().



#!/usr/bin/Perl

gunakan ketat ;
menggunakan peringatan ;
gunakan 5.34.0 ;

#Inisialisasi variabel
$n1 saya = 10 ;
$n2 saya = 25 ;
$hasil saya = 0 ;

#Fork proses saat ini
$proses_id saya = garpu ( ) ;

#Periksa id proses
jika ( $proses_id == 0 )
{
#Hitung perkalian angka
mengatakan 'Proses Anak: $$' ;
$hasil = $n1 * $n2 ;
mengatakan 'Tunggu 2 detik... \N ' ;
tidur 2 ;
mengatakan 'Perkalian $n1 dan $n2 adalah $hasil.' ;
}
elsif ( $proses_id > 0 )
{
#Hitung jumlah angkanya
mengatakan 'Proses Induk: $$' ;
$hasil = $n1 + $n2 ;
mengatakan 'Tunggu 1 detik... \N ' ;
tidur 1 ;
mengatakan 'Jumlah $n1 dan $n2 adalah $hasil.' ;
}
kalau tidak
{
mengatakan 'Tidak dapat melakukan proses fork.' ;
}

#Tunggu untuk menyelesaikan tugas proses
Tunggu ( ) ;

Keluaran:

Output berikut muncul setelah menjalankan skrip. Berdasarkan keluarannya, proses anak berhasil dibuat, ID proses dari proses induk dicetak, dan skrip dijeda selama 1 detik untuk menyelesaikan tugas. Selanjutnya, ID proses dari proses anak dicetak dan skrip dijeda selama 2 detik untuk menyelesaikan tugas. Output dari proses induk dan anak dicetak kemudian:

  hal2

Kesimpulan

Tujuan penggunaan fungsi Perl fork() ditunjukkan dalam tutorial ini dengan membuat proses anak dan melakukan berbagai jenis tugas di dalam blok proses induk dan anak.