Sistemski pozivi iz Perla
Sistemski pozivi u Perlu su usko povezani s terminologijom UNIX operativnog sustava. Svi operatori omogućuju pozivanje određenih procesa iz ljuske.
Operatori se dijele na dvije glavne skupine: operatori datotečnog sustava i operatori procesa.
U ovom dijelu će operatori biti samo ukratko navedeni, a njihova objašnjenja mogu se pronaći na perlfaq8 i perlfunc man stranicama.
Operatori datotečnog sustava
Operatori za upravljanje datotekama i direktorijima pozivima su vrlo slični onima koji se pozivaju u ljusci. Najčešći operatori su:
chdir ("/put/ . . . /direktorij");
# promjena aktivnog sirektorija
opendir (POKAZIVAC, "/path/ . . . /directory");
# postavljanje pokazivača za direktorij
closedir(POKAZIVAC);
# zatvarenje direktorija
readdir(POKAZIVAC);
# vraća imena datoteka iz direktorija
symlink("put", "IME_VEZE");
# stvaranje simboličke veze
link("path/file", "IME_VEZE");
# stvaranje čvrste veze (eng. hard link)
unlink("IME_VEZE");
# brisanje veza na datoteku
mkdir("ime_direktorija", mod);
# stvaranje novog direktorija
rmdir("ime_direktorija");
# brisanje direktorija
chmod(mode, "ime_datoteke");
# promjena moda datoteke
Operatori procesa
Operatori procesa su vrlo moćni po svojim mogućnostima. Oni omogućuju izvedbe poput jednostavnih poziva drugih programa, te izvedbe vrlo složenih procesa kao što je klijent/server mrežni model.
U ovom dijelu samo će biti spomenuti neki od najčešćih operatora procesa. Detaljnije objašnjavanje primjera i operatora preraslo bi obim seminarskog rada.
Najjednostavniji sistemski operator je system(). On pokreće novi proces, dijete Perl procesa. Ime novog procesa je sadržano unutar zagrada: system("pwd")
Vrijednost koju vraća proces dijete na STDOUT, moguće je dobiti ako se poziv procesa izvede pomoću unazadnih navodnika: $a = `pwd`;
Pokretanje novog procesa može se učiniti operatorom exec samo što se u tom slučaju automatsk gasi Perl proces: exec "pwd";
Najznačajniji operator kod baratanja procesima je zasigurno fork. On stvara klon Perl procesa koji ga je pozvao. Tako dva duplicirana procesa dijele jednake varijable (memoriju) i otvorene datoteke. Procesi se jedino razlikuju po vrijednosti varijable koju vraća fork. Proces vraća 0 za dijete i 1 za roditelja.
|